Perl est faiblement typé et basé sur le contexte. De nombreux scalaires peuvent être traités à la fois comme des chaînes et des nombres, selon les opérateurs que vous utilisez.
$a = 7*6; $b = 7x6; print "$a $b\n";
Vous obtenez 42 777777
.
Il y a cependant une différence subtile. Lorsque vous lisez des données numériques à partir d'un fichier texte dans une structure de données, puis que vous les affichez avec Data::Dumper
, vous remarquerez que vos nombres sont indiqués. Perl les traite en interne comme des chaînes.
Lire: $my_hash{$1} = $2 if /(.+)=(.+)\n/;
.
Déverser:'foo' => '42'
Si vous souhaitez que les numéros non cotés dans la décharge:
Lire: $my_hash{$1} = $2+0 if /(.+)=(.+)\n/;
.
Déverser:'foo' => 42
Après que $2+0
Perl a remarqué que vous avez traité $ 2 comme un nombre, parce que vous avez utilisé un opérateur numérique.
J'ai remarqué cela en essayant de comparer deux hachages avec Data::Dumper
.