Tôi có mảnh này của kịch bản:hành vi kỳ lạ của loại
#!/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);
tôi không có bất kỳ vấn đề hệ điều hành Windows XP/Strawberry Perl 5.10.1
hoặc Linux 2.6.12-1 i386/Perl v5.8.5 xây dựng cho i386-linux-thread-đa,
nhưng dưới Linux 2.6.18-53/Perl v5.8.8 xây dựng cho x86_64-linux-thread-đa, tôi đã nhận được thông báo lỗi:
Sort subroutine didn't return a numeric value at testsort.pl line 21.
Có gì không ổn và tôi có thể sửa nó như thế nào?
Điều tương tự có xảy ra nếu bạn đơn giản hóa nó như thế này không? @arr = sắp xếp {$ a <=> $ b} (123, 'nan', 456); – wdebeaum
@wdebeaum: không có lỗi trong một lớp lót nhưng không sắp xếp bất kỳ điều gì dưới x86_64 trong khi nó ok trong win XP và i386 – Toto