Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Perl排序arrayref_Arrays_Perl_Sorting_Multidimensional Array - Fatal编程技术网

Arrays Perl排序arrayref

Arrays Perl排序arrayref,arrays,perl,sorting,multidimensional-array,Arrays,Perl,Sorting,Multidimensional Array,因此,我有以下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的时候睡

因此,我有以下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的时候睡着了。我花了几个小时在网上搜寻代码和教程,但就是找不到。有人能给我提供一些示例代码吗。谢谢

只需按第一个元素对取消引用的数组进行排序:

$array = [ sort { $a->[0] cmp $b->[0] } @$array ];

返回:

[ [ 'aaaa', '2' ],
  [ 'bb',   '1' ],
  [ 'cc',   '3' ] ]

如果您可以访问CPAN,请使用(或通过)提供的
sort\u by
功能

。。。或者使用


两者都可以实现同样的效果,但您应该真正尝试获得一个现代版的
List::AllUtils
,因为它可以避免您重新发明许多轮子。

@$array=@$阵列而不是
$array=[…@$array]为了避免创建新的阵列太棒了,谢谢@choroba-我用了“”而不是“cmp”。工作完美。谢谢!
[ [ 'aaaa', '2' ],
  [ 'bb',   '1' ],
  [ 'cc',   '3' ] ]
use List::AllUtils 'sort_by';
$array = [ sort_by { $_->[0] } @$array ];
use Sort::Key 'keysort';
$array = [ keysort { $_->[0] } @$array ];