Perl diketik dengan lemah dan berdasarkan konteks. Banyak skalar dapat diperlakukan sebagai string dan angka, bergantung pada operator yang Anda gunakan.
$a = 7*6; $b = 7x6; print "$a $b\n";
Anda mendapatkan 42 777777
.
Namun, ada perbedaan halus. Saat Anda membaca data numerik dari file teks ke dalam struktur data, lalu menampilkannya dengan Data::Dumper
, Anda akan melihat bahwa nomor Anda dikutip. Perl memperlakukan mereka secara internal sebagai string.
Baca: $my_hash{$1} = $2 if /(.+)=(.+)\n/;
.
Membuang:'foo' => '42'
Jika Anda ingin nomor unquoted di dump:
Baca: $my_hash{$1} = $2+0 if /(.+)=(.+)\n/;
.
Membuang:'foo' => 42
Setelah $2+0
Perl memperhatikan bahwa Anda telah memperlakukan $ 2 sebagai angka, karena Anda menggunakan operator numerik.
Saya memperhatikan ini saat mencoba membandingkan dua hash dengan Data::Dumper
.