Хорошо, давайте посмотрим, что Perl рассматривает это выражение как модуль B :: Deparse :
$ perl -MO=Deparse,-p -e 'print "1234567890" x (10+9)/10;'
print((3993258840062839 * 2**573));
Очевидно, что оно оценивает его как число.Может быть из-за разделения?Давайте попробуем убрать это.
$ perl -MO=Deparse,-p -e 'print "1234567890" x (10+9);'
print('1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890');
, что выглядит правильно.Так что, в основном, он печатает это число, потому что вы рассматриваете эту действительно длинную строку как число благодаря разделению.
Обратите внимание, что x
и /
имеют одинаковый приоритет и остаются ассоциативными, так что a x b / c
рассматривается как (a x b) / c
.