Это сводится к тому, как скаляр проверяется в логическом контексте, в виде строки или числа?
В Perl документация ближе всего к стандарту. Таким образом, если в документах нет утверждений, то формальный ответ должен быть: Нет, это не « гарантированное поведение ».
Поскольку документы несколько раз дразнящим образом закрываются, говоря об этом контексте и конверсиях, и все же конкретно не не разъясняет, какой тест выполнен, я бы сказал, что это действительно должно быть воспринято как реализация подробно. Вы не можете " полагаться " на это.
Если необходима строгая надежность, одним из решений является простой класс, который позволяет проверить то, что вам нужно.
В более практическом смысле представляется, что в if ($v)
проверяется только строковая часть, а если ее там нет, то проводится числовой тест (без фактического преобразования, как говорят документы). Когда вы спросите о переменных, которые были установлены как dualvar, то для них это будет строковый тест.