在Perl中对数组引用数组进行排序 提要
我试图根据数组的第二个元素对数组引用进行排序 例如,我想将在Perl中对数组引用数组进行排序 提要,perl,sorting,Perl,Sorting,我试图根据数组的第二个元素对数组引用进行排序 例如,我想将@array中的以下数组排序为另一个已排序数组: 632.8 5 422.1 4 768.6 34 这是结束数组,@sorted\u数组 422.1 4 632.8 5 768.6 34 尝试代码 我遇到了这个问题,并对其进行了轻微修改。但是,我收到一个错误:当我尝试取消对排序数组的引用时,在.\test.pl第17行的打印中使用了未初始化的值 #!/bin/perl use strict; use warnings; my @ar
@array
中的以下数组排序为另一个已排序数组:
632.8 5
422.1 4
768.6 34
这是结束数组,@sorted\u数组
422.1 4
632.8 5
768.6 34
尝试代码
我遇到了这个问题,并对其进行了轻微修改。但是,我收到一个错误:当我尝试取消对排序数组的引用时,在.\test.pl第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;
}
将数组引用传递到子例程中,然后尝试将其用作数组。你需要先去引用它
sub sort_arr {
my ($arr) = @_;
my @sorted_arr = sort { $a->[1] cmp $b->[1] } @{ $arr };
return \@sorted_arr;
}
将数组引用传递到子例程中,然后尝试将其用作数组。你需要先去引用它
sub sort_arr {
my ($arr) = @_;
my @sorted_arr = sort { $a->[1] cmp $b->[1] } @{ $arr };
return \@sorted_arr;
}
非常感谢!我以为我在用my@arr=@$\u0]解除对它的引用代码>:p@SinTrans如果您将$\[0]
放在大括号中,例如my@arr=@{$\[0]},它会起作用
@SinTrans作为旁注,当数据似乎是数字时,您正在使用cmp
(字符串比较)。它可能应该是
(数字比较)。@HunterMcMillen谢谢@是的,但我相信perl通过cmp
成功地解决了这个问题,因为perl通常会做出类似的模糊决定D@SinTrans:否。数字和字符串比较非常不同。如果Perl能够“弄明白”,就不会有两个操作符了,非常感谢!我以为我在用my@arr=@$\u0]解除对它的引用代码>:p@SinTrans如果您将$\[0]
放在大括号中,例如my@arr=@{$\[0]},它会起作用
@SinTrans作为旁注,当数据似乎是数字时,您正在使用cmp
(字符串比较)。它可能应该是
(数字比较)。@HunterMcMillen谢谢@是的,但我相信perl通过cmp
成功地解决了这个问题,因为perl通常会做出类似的模糊决定D@SinTrans:否。数字和字符串比较非常不同。如果Perl能够“弄明白”,就不会有两个操作符