Что Perl делает с этим аргументом для продвижения в этом случае?

Я просто видел некоторый код в нашей кодовой базе (и это - СТАРЫЙ код, как в Perl 3 или Perl 4 дня), который похож на это (я упрощаю значительно):

 @array;
 push( array, $some_scalar );

Заметьте что array в push() не имеет @. Я предположил бы, что код позади нажатия знает, что первым аргументом, как предполагается, является массив так захватывает массив от array typeglob. Это - более или менее это? Если бы Perl может сделать это без проблемы, почему необходимо было бы включать @ вообще?

8
задан Morinar 30 March 2010 в 21:45
поделиться

3 ответа

Это старая «функция» синтаксического анализатора. @ Не является обязательным при нажатии, если переменная является переменной пакета. Многие считают это ошибкой, которую следует исправить. Тебе действительно не следует этого делать.

9
ответ дан 5 December 2019 в 11:24
поделиться

Это сомнительная «особенность» perl, устаревшее поведение; это должно быть ошибка, но это работает.

Если вы включите предупреждения компилятора ( perl -W , настоятельно рекомендуется), он выдаст предупреждение:

Array @aa missing the @ in argument 1 of push() at xx.pl line 2.
4
ответ дан 5 December 2019 в 11:24
поделиться

Николас Кларк объясняет :

Это синтаксис Perl 1.
2
ответ дан 5 December 2019 в 11:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: