我不是很擅長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