Chạy perl 5.12.4 Có sự chênh lệch giữa kết quả của hàm khi hàm băm được gán trong câu lệnh trả về hoặc trước đó. Ví dụ dễ nhất là:chuyển nhượng perl để băm trong trở lại chương trình con được lạ
perl -e 'sub s1 {
my @a=qw/b 1 c 2 a 3 a 4/;
my %[email protected];
return %h
}
print "@{[ s1()]}\n"'
c 2 a 4 b 1
perl -e 'sub s1 {
my @a=qw/b 1 c 2 a 3 a 4/;
my %[email protected];
return %[email protected]
}
print "@{[ s1()]}\n"'
c 2 c 2 a c
Tại sao (lại) gán cho hàm băm trong câu lệnh trả về (ví dụ thứ 2) làm hỏng hàm băm được trả về?
Xác nhận. Điều này thực sự kỳ lạ. Nhưng khi tôi chạy mã trên v14.2 hoặc v16.3 nó chạy mà không có vấn đề → nó dường như đã được cố định, mặc dù tôi không thể nhìn thấy bất kỳ đề cập đến các bản sửa lỗi liên quan trong perldeltas. – amon
Chạy ví dụ thứ hai của bạn trên perl 5.16.2, tôi nhận được 'b 1 c 2 a 4' – friedo
Điều này hơi lạ. Tôi ** có thể ** sao chép điều này trên một trong các máy của tôi: 'Đây là perl 5, phiên bản 12, subversion 4 (v5.12.4) được xây dựng cho darwin-thread-multi-2level' – chrsblck