私は Perl はあまり得意ではありませんが、多次元配列で並べ替えを行う必要があります。概念をよりよく理解するためにいくつかのテスト コードを試してみましたが、近づいていると思いますが、魔法の組み合わせが見つかりません。
私ができないように見えるのは、配列を逆参照して正しく印刷することです。参照されている配列の値を除いて、これらの参照について知る必要がある世界のほぼすべてを取得できるようです。
タブ区切りのフラット ファイルからデータを取得しているので、サンプル コードでは、分割を介して複数の配列を作成し、それらを 1 つの配列にプッシュすることでそれを模倣しています。実際には、ファイルをループし、タブを分割して配列にプッシュします。
これについてもっと良い方法があれば、私はすべて耳にします。フラット ファイルの各行は 1 つのレコードです。最初に日付で並べ替えて、最も古いレコードを一番上に表示してから、2 番目の並べ替えを行ってアカウント番号でレコードをグループ化する必要があります。オンラインでいくつかの例を見てきましたが、模倣する必要があるデータで機能するように見えるものは見つかりませんでした。
my @s1 = split(/:/, 'X:Y:Z');
my @s2 = split(/:/, 'A:B:C');
my @s3 = split(/:/, 'Q:L:P:0');
my @s4 = split(/:/, 'U:E:G');
my @array = ();
push(@array, \@s1);
push(@array, \@s2);
push(@array, \@s3);
push(@array, \@s4);
print "@array\n";
my @sorted = sort { $a->[0] cmp $b->[0] } @array;
print "\n";
foreach $thingy (@sorted)
{
print @thingy . "\n"; #result: number 0
print $thingy . "\n"; #result: reference
#print ${$thingy} . "\n"; #result: 'Not a scalar reference' error
print ${@thingy} . "\n"; #result: file name (???)
print @{$thingy} . "\n"; #result: length of the array referenced
}