Я просто видел некоторый код в нашей кодовой базе (и это - СТАРЫЙ код, как в Perl 3 или Perl 4 дня), который похож на это (я упрощаю значительно):
@array;
push( array, $some_scalar );
Заметьте что array
в push()
не имеет @
. Я предположил бы, что код позади нажатия знает, что первым аргументом, как предполагается, является массив так захватывает массив от array
typeglob. Это - более или менее это? Если бы Perl может сделать это без проблемы, почему необходимо было бы включать @
вообще?
Это старая «функция» синтаксического анализатора. @ Не является обязательным при нажатии, если переменная является переменной пакета. Многие считают это ошибкой, которую следует исправить. Тебе действительно не следует этого делать.
Это сомнительная «особенность» perl, устаревшее поведение; это должно быть ошибка, но это работает.
Если вы включите предупреждения компилятора ( perl -W , настоятельно рекомендуется), он выдаст предупреждение:
Array @aa missing the @ in argument 1 of push() at xx.pl line 2.