Начинающий программист хотел разобраться, какие значения perl считает опредленными, неопределенными, истинными, ложными, нулевыми и ненулевыми. Для этого он написал функцию, которя выводит на экран все характеристики переданного значения:
Результаты вызова этой функции с разными параметрами очень удивили программиста…
Получалось так, что все значения – определенные, истинные, ненулевые.
Но:
Значение, которое передается в функцию и значение, которое функция получает – всегда ли это одно и то же?
Проблема в строке
В скалярном контексте массив @_
вычисляется в количество его элементов,
и в переменную $var
попадает значение 1
, независимо от переданных аргументов.
Правильно было бы так:
или
Самое точное и подробное объяснение проблемы прислал наш читатель Дмитрий Ольшевский. Здорово!