Я несколько новичок в perl, поэтому, пожалуйста, несите меня. Я исчерпал все возможные решения, которые я смог найти до сих пор.perl sort 2d массив со ссылками
Предположим, у меня есть шляпы с некоторыми измерениями, которые заполнены в другом месте. И я хочу сортировать их на основе определенной колонки. Я пытаюсь сделать это, используя «сортировку» perl, но я не могу их сортировать. Я считаю, что проблема в том, что я запутался в ссылках. Ниже приведен код, с которым я сейчас работаю.
my @hat1 = [3, 4, 5, 6, 7, 8];
my @hat2 = [4, 6, 5, 1, 1, 2];
my @hat3 = [9, 8, 9, 3, 4, 4];
#eventually work with unknown number of hats
my @binToSort = (\@hat1,\@hat2,\@hat3);
my @binSorted = sort { $a->[4] <=> $b->[4] } @binToSort;
for my $ref (@binSorted){
for my $inner (@$ref){
print "@$inner\n";
}
}
В настоящее время он печатает несортированные массив значений:
3 4 5 6 7 8
4 6 5 1 1 2
9 8 9 3 4 4
Но я хочу, чтобы иметь возможность прийти:
4 6 5 1 1 2
9 8 9 3 4 4
3 4 5 6 7 8
Я чувствую, что это простая задача но я не могу понять, как это сделать. Любая помощь высоко ценится!
Подсказка: включить предупреждения с 'предупреждения использования;' и вы получите 'Использование неинициализированного значения в числовом сравнения (<=>)' Думай о том, почему '$ a -> [4]' и '$ b -> [4]' могут быть не определены. – ThisSuitIsBlackNot
и при необходимости добавить 'use Data :: Dumper; print Dumper \ @binToSort; ' – ysth
Теперь я вижу предупреждения, спасибо. И 'print Dumper \ @binToSort;' дает мне '$ VAR1 = [[[3,4,5,6,7,8]], [[4,6,5,1,1,2]], [[ 9,8,9,3,4,4]]]; '(в виде столбцов). Эти двойные скобки ... это красный флаг? – imomushi8