Perl tiene un tipo de letra débil y se basa en el contexto. Muchos escalares se pueden tratar como cadenas y números, según los operadores que utilice.
$a = 7*6; $b = 7x6; print "$a $b\n";
Usted consigue 42 777777
.
Sin embargo, existe una sutil diferencia. Cuando lee datos numéricos de un archivo de texto en una estructura de datos y luego los ve con Data::Dumper
, notará que sus números están entrecomillados. Perl los trata internamente como cadenas.
Lea: $my_hash{$1} = $2 if /(.+)=(.+)\n/;
.
Tugurio:'foo' => '42'
Si desea que los números no cotizados en un vertedero:
Leer: $my_hash{$1} = $2+0 if /(.+)=(.+)\n/;
.
Tugurio:'foo' => 42
Después de que $2+0
Perl advierte que ha tratado $ 2 como un número, porque utilizó un operador numérico.
Me di cuenta de esto mientras intentaba comparar dos hashes con Data::Dumper
.