我不太擅长 Perl,但我需要能够对多维数组进行排序。我一直在使用一些测试代码来尝试更好地掌握这个概念,我想我已经接近了,但我找不到神奇的组合。
我似乎无法做的是取消引用我的数组并让它们正确打印。除了被引用的数组中的值之外,我似乎可以了解世界上我需要了解的关于这些引用的所有内容。
我从制表符分隔的平面文件中获取数据,因此在我的示例代码中,我通过拆分创建多个数组然后将它们推入单个数组来模仿这一点。在实践中,我将遍历文件,拆分选项卡并将它们推入数组中。
如果有更好的方法来解决这个问题,我会全力以赴。平面文件中的每一行都是一条记录。我需要首先按日期排序以将最旧的记录排在最前面,然后进行二次排序以按帐户编号对记录进行分组。我在网上查看了几个示例,但没有找到任何似乎与我需要模仿的数据一起工作的东西。
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
}