Массив имеет элемент, потому что вы его назначили. Рассмотрим следующее:
@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