Почему Perl говорит, что глобальный символ "SYMBOL" требует явного имени пакета в строке X PROGRAM.pl? - PullRequest
9 голосов
/ 23 ноября 2010

Я пишу свои первые программы на Perl, и написал это:

use strict;
use warnings;
$animal = "camel";
print($animal);

Когда я запускаю его, я получаю следующие сообщения из командной строки Windows:

Global symbol "animal" requires explicit package name at stringanimal.pl line 3
Global symbol "animal" requires explicit package name at stringanimal.pl line 4

Пожалуйста, кто-нибудь может сказать, что означают эти сообщения?

Ответы [ 2 ]

26 голосов
/ 23 ноября 2010

use strict; заставляет вас объявлять переменные перед их использованием.Если вы этого не сделаете (как в вашем примере кода), вы получите эту ошибку.

Чтобы объявить свою переменную, измените эту строку:

$animal = "camell";

На:

my $animal = "camell";

См. " Объявление переменных " для более подробного объяснения, а также раздел Perldoc для use strict.

PS Верблюд пишется"верблюд": -)

Редактировать: На самом деле сообщение об ошибке означает, что Perl не может найти переменную с именем $animal, поскольку она не была объявлена, и предполагает, чтоэто должна быть переменная, определенная в пакете, но вы забыли поставить перед ней префикс, например, $packageName::animal.Очевидно, что это не тот случай, вы просто не объявили $animal.

0 голосов
/ 23 ноября 2010

Вы должны поставить:

my $animal = "camel"

при использовании use strict.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...