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

use*_*289 0 sorting perl

$, = ' '; print sort {$a-$b} qw/1.5 2.5 2 1/;
Run Code Online (Sandbox Code Playgroud)

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

即便这样也行不通:

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

$a与$bmagick有关的东西,好像它们被评估为字符串一样.OTOH,整数列表正确排序-而不是<=>.

Bar*_*mar 9

从Perl 文档

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

如果使用-带floats,它返回一个float结果,而不是integer所要求的上方.