строки. оператор повторения(repetition operator)

Есть две инструкции:

print "o" . "la" x 4 * 3, "\n";

print "ba" ."na" x4*3,"\n";

Если в первом случае вывод очевиден: o0, то почему во второй инструкции вывод будет baNaN, а не ba0?


Ответы (1 шт):

Автор решения: extrn

Операция умножения требует конвертации строки в число, но строка начинающаяся с nan (регистр не важен), интерпретируется как числовое значение NaN (не число)

say int "nanomachines" # NaN

Так же как, например, строка начинающаяся с inf, интерпретируется как Inf (+∞)

say -int "information" # -Inf

В вашем случае

say int "na" x 4 # NaN

потому, что int "nananana" возвращает специальное числовое значение

say int "la" x 4 # 0

потому, что int "lalalala" просто считает, что строка не содержит ведущих цифр, и возвращает 0

→ Ссылка