Perl é fracamente tipado e baseado em contexto. Muitos escalares podem ser tratados como strings e números, dependendo dos operadores usados.
$a = 7*6; $b = 7x6; print "$a $b\n";
Você consegue 42 777777
.
Porém, há uma diferença sutil. Quando você lê dados numéricos de um arquivo de texto em uma estrutura de dados e os visualiza com Data::Dumper
, você notará que seus números estão entre aspas. Perl os trata internamente como strings.
Leia-se: $my_hash{$1} = $2 if /(.+)=(.+)\n/;
.
Despejar:'foo' => '42'
Se você quiser números não cotadas no despejo:
Leia: $my_hash{$1} = $2+0 if /(.+)=(.+)\n/;
.
Despejar:'foo' => 42
Depois que $2+0
Perl percebe que você tratou $ 2 como um número, porque você usou um operador numérico.
Percebi isso ao tentar comparar dois hashes com Data::Dumper
.