Мой первый Perl-скрипт генерирует ошибку - PullRequest
0 голосов
/ 16 июня 2011

Мой скрипт на Perl:

#!/usr/bin/perl -w
use strict ;
use warnings;
print "Hello $name \n"

Я получаю эту ошибку:

Глобальному символу "$ name" требуется явное имя пакета в fst_pscpt.pl.

Это действительно останавливает мой прогресс. Нам нужно включить какие-либо пакеты ???

Спасибо и С уважением, Б.Равитея

Ответы [ 3 ]

13 голосов
/ 16 июня 2011

Вы не объявили ни одной переменной $name.Так что вам нужно как-то получить эту переменную.Например, если вы хотите получить его из командной строки, вы можете сделать это:

#!/usr/bin/perl -w
use strict;
use warnings;
my $name = $ARGV[0];
print "Hello, $name!\n";

и затем вызвать вашу программу следующим образом:

./myprog.pl Rafe

и получить вывод:

Hello, Rafe!

Кроме того, у вас нет точки с запятой в конце последней строки.Вам это тоже понадобится.

5 голосов
/ 16 июня 2011

диагностика дает вам более полезную помощь в этом случае:

$ perl -Mdiagnostics fst_pscpt.pl
Global symbol "$name" requires explicit package name at fst_pscpt.pl line 4.
Execution of fst_pscpt.pl aborted due to compilation errors (#1)
    (F) You've said "use strict" or "use strict vars", which indicates
    that all variables must either be lexically scoped (using "my"),
    declared beforehand using "our", or explicitly qualified to say
    which package the global variable is in (using "::").

Uncaught exception from user code:
        Global symbol "$name" requires explicit package name at fst_pscpt.pl line 4.
Execution of fst_pscpt.pl aborted due to compilation errors.
 at fst_pscpt.pl line 5
2 голосов
/ 16 июня 2011

Вам нужно объявить $name, когда вы use strict; (включая строгие переменные).Просто вставьте строку:

my $name;

перед ее использованием.

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