Без use strict 'subs';
идентификаторы, которые не имеют другого грамматического значения, обрабатываются как строковые литералы, которые выдают себя при оценке. Это очень подвержено ошибкам (потому что это легко приводит к тому, что код выполняет одну вещь, когда ожидается выполнение другой), поэтому мы все используем use strict 'subs';
в нашем коде, чтобы избавить нас от этой ошибочной функции.
Если вы хотите создать оператор, который выдает строку NUMBER
или SCALAR
при использовании use strict 'subs';
, вам нужно использовать что-то отличное от NUMBER
и SCALAR
. Как вы упомянули, вы можете использовать 'NUMBER'
и 'SCALAR'
.
Другая возможность состоит в том, что NUMBER
должно быть именем константы, но вы забыли объявить / импортировать константу. Это именно тот тип ошибки, который use strict 'subs';
должен отловить.