Массив имеет элемент, потому что вы его присвоили. Учтите следующее:
@array = undef; # Assigns the value 'undef' to @array
@array = (); # Assigns the empty list to @array
undef @array; # Undefines @array
Они похожи, но первая строка отличается от двух других (которые эквивалентны). Первая строка приводит к массиву с одним элементом (значение undef
). Два других результата в пустом массиве. В Perl undef
является одновременно значением и оператором. Первая строка использует его как значение, последняя строка использует его как оператор.
Обычно нет необходимости очищать массив. Они пусты при объявлении:
my @array; # There's nothing in here, yet