如何在perl中自定义2D数组?

时间:2013-05-09 19:12:47

标签: arrays perl sorting 2d

我有一个2D数组,我这样创建:

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

我尝试为这个数组编写sort函数:

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

但它似乎不起作用。

我想要做的是根据每个“行”的“第三列”的值对“行”进行排序。我该怎么做?

1 个答案:

答案 0 :(得分:2)

你几乎得到了它,但是你使用了错误的操作符。 sort子例程需要返回三个值中的一个。对于数字比较,您可以使用太空船(<=>),如果左侧参数小于右侧,则返回-1;如果它们相等则返回0;如果左侧大于,则返回1右。

所以:

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

(请注意,这实际上是第四个列,因为数组是零索引的。我假设这就是你想要的。)