2

我对此感到困惑,显然缺少一些基本的东西。似乎 perl 排序不适用于特定的值集。以下是部分测试代码:

    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
######################################
4

1 回答 1

12

默认情况下,sort将按词法排序。所以 23 和 24 出现在 7 之前,原因与字典中 bc 和 bd 出现在 g 之前的原因相同。

sort {$a <=> $b} @p将产生一个数字排序。

http://perldoc.perl.org/functions/sort.html了解更多信息。

于 2013-08-27T22:16:45.370 回答