2013-05-09 68 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