ハッシュの配列を持っている、
my @arr = get_from_somewhere();
@arrの内容(たとえば)は次のとおりです。
@arr = (
{ id => "id2", requires => 'someid', text => "another text2" },
{ id => "xid4", requires => 'id2', text => "text44" },
{ id => "someid", requires => undef, text => "some text" },
{ id => "id2", requires => 'someid', text => "another text2" },
{ id => "aid", requires => undef, text => "alone text" },
{ id => "id2", requires => 'someid', text => "another text2" },
{ id => "xid3", requires => 'id2', text => "text33" },
);
次のようなものが必要です:
my $texts = join("\n", get_ordered_texts(@arr) );
sooは、ハッシュからsの配列を返すsubを記述する必要がありtext
ます。これは、依存する順序であるため、上記の例から次のように取得する必要があります。
"some text", #someid the id2 depends on it - so need be before id2
"another text2", #id2 the xid3 and xid4 depends on it - and it is depends on someid
"text44", #xid4 the xid4 and xid3 can be in any order, because nothing depend on them
"text33", #xid3 but need be bellow id2
"alone text", #aid nothing depends on aid and hasn't any dependencies, so this line can be anywhere
ご覧のとおり、@ arrには重複した「行」(上記の例では「id2」)が含まれている可能性があり、IDを1回だけ出力する必要があります。
開始方法がわからないため、まだコード例を提供していません。;(ソリューションに使用できるCPANモジュールがいくつかありますか?
誰かが私を正しい方向に向けることができますか?