我不是很擅长Perl,但我需要能够对多维数组进行排序。我一直在玩一些测试代码,试图更好地理解这个概念,并且我认为我越来越接近了,但是我找不到这个魔术组合。我似乎无法正确解引用数组
我似乎无法做的是取消引用我的数组,并让他们打印正确。除了被引用的数组中的值以外,我似乎可以得到关于这些refrences所需的全部信息。
我从制表符分隔的平面文件中获取数据,因此在我的示例代码中,我通过拆分创建多个数组,然后将它们推送到单个数组中来模拟该数据。实际上,我会循环浏览文件,在选项卡上分割并将它们推入阵列中。
如果还有更好的方法可以解决这个问题,那么我就会全神贯注。平面文件中的每一行都是单个记录。我需要先按日期排序才能将最早的记录置顶,然后进行二次排序以按照acct编号对记录进行分组。我在网上查了几个例子,但没有发现任何似乎与我需要模仿的数据一致的东西。所有的
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
}
不直接关系到你的问题,但你可能要考虑是这样的:'我@array =图[拆分/:/],QW(X:Y:ZA :B:CQ:L:P:0 U:E:G)'。 – FMc 2011-05-23 23:35:47