mam ten kawałek skryptu:Dziwne zachowanie rodzaju
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @arr = (
{
name => 'foo',
value => 123,
},
{
name => 'bar',
value => 'nan',
},
{
name => 'foobar',
value => 456,
},
);
@arr = sort {$a->{value} <=> $b->{value} } @arr;
print Dumper(\@arr);
nie mam żadnych problemów w systemie Windows XP/Strawberry Perl 5.10.1
albo Linux 2.6.12-1 i386/Perl v5.8.5 zbudowane dla i386-linux-thread-multi,
ale pod Linuksem 2.6.18-53/Perl v5.8.8 zbudowany dla x86_64-linux-thread-multi, mam komunikat o błędzie:
Sort subroutine didn't return a numeric value at testsort.pl line 21.
Co jest nie tak i jak mogę to naprawić?
Czy to samo się stanie, jeśli uprościsz to w ten sposób? @arr = sort {$ a <=> $ b} (123, 'nan', 456); – wdebeaum
@wdebeaum: brak błędów w jednej linijce, ale nie sortuje niczego pod x86_64, podczas gdy wszystko jest OK pod XP wygrywa i i386 – Toto