2013-05-09 56 views
2

我有我創建這樣的二維數組:如何在perl中自定義排序二維數組?

# i do this in a loop 
push @{ $list[$array_index++] }, ($x[0], $x[1], $x[2], $y); 

我試着寫的排序功能,此數組是這樣的:

@sorted = sort {$a->[3] > $b->[3]} @list; 

,但它似乎並沒有工作。

我想要做的是根據每個「行」的「第三列」的值排序「行」。我該怎麼做?

回答

2

你差不多了,但你使用的是錯誤的操作符。排序子程序需要返回三個值中的一個。對於數字比較,您可以使用太空船(<=>),如果左側參數小於右側,則返回-1;如果相等,則返回0;如果左側大於右側,則返回1。

所以:

@sorted = sort {$a->[3] <=> $b->[3]} @list; 

(注意,這實際上是在第四柱因爲數組是零索引我猜想這就是你想要的東西。)

+0

是,非常感謝你:) – Consuelo 2013-05-09 20:11:14