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+0Perl 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.