Perl è debolmente tipizzato e basato sul contesto. Molti scalari possono essere trattati sia come stringhe che come numeri, a seconda degli operatori utilizzati.
$a = 7*6; $b = 7x6; print "$a $b\n";
Ottieni42 777777
.
Tuttavia, c'è una sottile differenza. Quando leggi i dati numerici da un file di testo in una struttura dati e poi li visualizzi con Data::Dumper
, noterai che i tuoi numeri sono citati. Perl li tratta internamente come stringhe.
Leggi: $my_hash{$1} = $2 if /(.+)=(.+)\n/;
.
Dump:'foo' => '42'
Se si desidera che i numeri non quotate in discarica:
Leggi: $my_hash{$1} = $2+0 if /(.+)=(.+)\n/;
.
Dump:'foo' => 42
Dopo che $2+0
Perl ha notato che hai trattato $ 2 come un numero, perché hai usato un operatore numerico.
L'ho notato mentre cercavo di confrontare due hash con Data::Dumper
.