我对此感到困惑,显然遗漏了一些基本的东西。似乎perl sort不适用于特定的值集。以下是测试代码的一部分:
use strict;
my $i = 7;
my $j = 8;
my $k = 4;
print "before:$i:$j:$k\n";
my @p = ($i, $j, $k);
($i, $j, $k) = sort(@p);
print "after:$i:$j:$k\n";
print "######################################\n";
my $i = 23;
my $j = 24;
my $k = 7;
print "before:$i:$j:$k\n";
my @p = ($i, $j, $k);
($i, $j, $k) = sort(@p);
print "after:$i:$j:$k\n";
print "######################################\n";
如您所见,当输入值为(7:8:4)时,它可以正常工作。当值为(23:24:7)时似乎不起作用!
before:7:8:4
after:4:7:8
######################################
before:23:24:7
after:23:24:7
######################################
答案 0 :(得分:12)
默认情况下,sort
将按词汇排序。所以23和24在7之前出现的原因与bc和bd在字典中的g之前相同。
sort {$a <=> $b} @p
将产生数字排序。