Forum Webscript.Ru
Программирование => Perl => Тема начата: Phoinix от 06 Августа 2004, 15:31:55
-
Столкнулся с такой фичей ;) искал долго и упорно
при использовании функции undef применительно к массивам:
@array = undef и undef @array - выводят разные результаты, если в первом случае получаем массив с одним пустым элементом, то во втором - просто пустой массив...
-
Хмм... это по крайней мере логично. Это две разные вещи, в первом случае это пустое правое значение а во втором это функция.
perldoc -f undef
-
NeoNox
Это логично, но немного смутило, что в описании этого момента как раз и не было...
Проблема возникла в случае, когда массив используется повторно при одном объявлении:
my @array = (\'1\',\'2\',\'3\');
#... some function ...
@array = undef;
for (1..3) {
push @array, $_
}
# @array = (\'\', \'1\', \'2\', \'3\') значение массива после цикла
#... some function ...
[OFF]Прошлось потратить некоторое время прежде чем нашел, откуда берется пустой элемент, сначала грешил на цикл (в моем варианте он более сложны), вконце когда "опустились руки" сделал просто shift @array; пока все-таки пошагово не прошел всу процедуру...[/OFF]