我正在尝试根据数组的第二个元素对数组引用数组进行排序。
例如,我想将@array
中的以下数组排序到另一个排序数组中:
632.8 5
422.1 4
768.6 34
这是结束数组@sorted_array
422.1 4
632.8 5
768.6 34
我遇到了这个answer并略微修改了它。但是,当我尝试取消引用已排序的数组时,我收到错误:Use of uninitialized value in print at .\test.pl line 17
。
#!/bin/perl
use strict;
use warnings;
my @array = ();
foreach my $i (0..10) {
push @array, [rand(1000), int(rand(100))];
}
foreach my $i (@array) {
print "@$i\n";
}
print "================\n";
my $sorted_ref = sort_arr(\@array);
print @$sorted_ref;
sub sort_arr {
my @arr = @$_[0];
my @sorted_arr = sort { $a->[1] cmp $b->[1] } @arr;
return \@sorted_arr;
}
答案 0 :(得分:5)
您将数组引用传递给子例程,然后尝试将其用作数组。你需要先取消引用它。
sub sort_arr {
my ($arr) = @_;
my @sorted_arr = sort { $a->[1] cmp $b->[1] } @{ $arr };
return \@sorted_arr;
}