Эквивалентное число и строка ведут себя по-разному в хеш-ключах - или, в более общем случае, в любое время, когда мы строковым образом переводим большое число:
my (%g, %h);
$g{ 1234000000000000 } = undef; # '1.234e+015' => undef
$h{'1234000000000000'} = undef; # '1234000000000000' => undef
Обратите внимание, что мы все еще находимся в пределах диапазона, в котором Perl может точно хранить число:
> perl -e 'printf qq{%.f\n}, 1234000000000000 + $_ for +1, 0, -1'
1234000000000001
1234000000000000
1233999999999999