Итак, у меня есть этот код 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"
Я, должно быть, спал во время «Программирования 101» в 90-х. Я потратил часы на поиск кода и учебных пособий в сети и просто не могу их получить. Может кто-нибудь предоставить мне образец кода, пожалуйста. Благодарность!



Просто отсортируйте разыменованный массив по первому элементу:
$array = [ sort { $a->[0] cmp $b->[0] } @$array ];
или
@$array = sort { $a->[0] cmp $b->[0] } @$array;
Возврат:
[ [ 'aaaa', '2' ],
[ 'bb', '1' ],
[ 'cc', '3' ] ]
Если вы можете подключиться к CPAN, используйте функцию sort_by, предоставляемую List::UtilsBy (или через List::AllUtils)
use List::AllUtils 'sort_by';
$array = [ sort_by { $_->[0] } @$array ];
... или, альтернативно, используя Sort::Key
use Sort::Key 'keysort';
$array = [ keysort { $_->[0] } @$array ];
Оба достигают одного и того же, но вам действительно стоит попробовать получить современную версию List::AllUtils, так как это избавит вас от необходимости изобретать множество колес.
Или @$array = ... @$array; вместо $array = [ ... @$array ];, чтобы не создавать новый массив
это здорово, спасибо @choroba - я использовал '<=>' вместо 'cmp'. работает отлично. Благодарность!