为什么'sort {$ a- $ b}(浮动列表)'在Perl中不起作用?

时间:2014-02-22 12:14:09

标签: perl sorting

$, = ' '; print sort {$a-$b} qw/1.5 2.5 2 1/;

制作1.5 1 2.5 2。我知道<=>,我只是想知道发生了什么,以及是否记录了这种行为。

即使这不起作用:

$, = ' '; print(sort{(sqrt$a)-(sqrt$b)} qw/1.5 2.5 2 1/);

$a$b magick有关,就好像它们被评估为字符串一样。 OTOH,整数列表使用-而不是<=>正确排序。

1 个答案:

答案 0 :(得分:9)

来自Perl documentation

  

如果指定了SUBNAME,则它会给出一个子程序的名称,该子程序返回小于,等于或大于0的整数,具体取决于列表元素的排序方式。

如果您将-floats一起使用,则会返回float结果,而不是上述integer的结果。