所以我有这个Perl代码:
$array->[0][0] = "cc";
$array->[0][1] = "3";
$array->[1][0] = "aaaa";
$array->[1][1] = "2";
$array->[2][0] = "bb";
$array->[2][1] = "1";
我需要按字母顺序对其进行排序(第二列),以便$ array-> [0] [0]为“ aaaa”,而$ array-> [0] [1]为“ 2”
我在90年代编程101期间肯定已经睡着了。我已经花了数小时在网上拖曳代码和教程,但无法获取。有人可以给我提供一些示例代码。谢谢!
答案 0 :(得分:7)
只需按第一个元素对取消引用的数组进行排序:
$array = [ sort { $a->[0] cmp $b->[0] } @$array ];
或
@$array = sort { $a->[0] cmp $b->[0] } @$array;
返回:
[ [ 'aaaa', '2' ],
[ 'bb', '1' ],
[ 'cc', '3' ] ]
答案 1 :(得分:4)
如果您可以使用CPAN,请使用List::UtilsBy
(或通过List::AllUtils
)提供的sort_by
功能
use List::AllUtils 'sort_by';
$array = [ sort_by { $_->[0] } @$array ];
...或使用Sort::Key
use Sort::Key 'keysort';
$array = [ keysort { $_->[0] } @$array ];
两者都可以达到相同的目的,但是您实际上应该尝试获得List::AllUtils
的现代版本,因为它可以避免重新发明很多轮子。