为什么';排序{$a-$b}(浮动列表)和#x27;不';你不能用Perl吗?
产生为什么';排序{$a-$b}(浮动列表)和#x27;不';你不能用Perl吗?,perl,sorting,Perl,Sorting,产生1.512.52。我知道,我只是想知道发生了什么,以及这种行为是否有文档记录 即使这样也不行: $, = ' '; print sort {$a-$b} qw/1.5 2.5 2 1/; 与$a和$bmagick有关的内容,就好像它们是作为字符串计算的一样。OTOH,整数列表使用-而不是Perl中的正确排序 如果指定了SUBNAME,它将给出返回小于、等于或大于0的整数的子例程的名称,具体取决于列表元素的排序方式 如果将-与浮点数一起使用,它将返回一个浮点数结果,而不是上面要求的整数。我不
1.512.52
。我知道
,我只是想知道发生了什么,以及这种行为是否有文档记录
即使这样也不行:
$, = ' '; print sort {$a-$b} qw/1.5 2.5 2 1/;
与$a
和$b
magick有关的内容,就好像它们是作为字符串计算的一样。OTOH,整数列表使用-
而不是Perl中的
正确排序
如果指定了SUBNAME,它将给出返回小于、等于或大于0的整数的子例程的名称,具体取决于列表元素的排序方式
如果将
-
与浮点数一起使用,它将返回一个浮点数
结果,而不是上面要求的整数
。我不太明白为什么您认为它会起作用。它适用于整数,并保存了几次击键。在多次使用之后,我错误地认为任何负值或正值都可以。当它不适用于浮点数时,我扭曲的推理得出结论,$a
和$b
在减法之前以某种方式计算为整数(或字符串)。我真傻。不管怎样,由于巴尔马的回答,它现在被清除了;打印排序{10*$a-10*$b}qw/1.52.52/代码>给出1 1.5 2.5
。
$, = ' '; print(sort{(sqrt$a)-(sqrt$b)} qw/1.5 2.5 2 1/);