Perl được đánh máy yếu và dựa trên ngữ cảnh. Nhiều vô hướng có thể được coi là chuỗi và số, tùy thuộc vào toán tử bạn sử dụng.
$a = 7*6; $b = 7x6; print "$a $b\n";
Bạn nhận được 42 777777
.
Tuy nhiên, có một sự khác biệt nhỏ. Khi bạn đọc dữ liệu số từ một tệp văn bản vào một cấu trúc dữ liệu, rồi xem nó với Data::Dumper
, bạn sẽ nhận thấy rằng các số của bạn được trích dẫn. Perl xử lý chúng bên trong như một chuỗi.
Đọc: $my_hash{$1} = $2 if /(.+)=(.+)\n/;
.
Bán phá giá:'foo' => '42'
Nếu bạn muốn con số không thể viện chứng trong bãi:
đọc: $my_hash{$1} = $2+0 if /(.+)=(.+)\n/;
.
Bán phá giá:'foo' => 42
Sau khi $2+0
Perl nhận thấy rằng bạn đã coi $ 2 là một số, vì bạn đã sử dụng một toán tử số.
Tôi nhận thấy điều này trong khi cố gắng so sánh hai hàm băm với Data::Dumper
.