Глобальный символ требует явного имени пакета? Почему это произошло и какие различные случаи могут вызвать эту ошибку?Глобальный символ требует явного имени пакета
ответ
Посмотрите perldiag:
Глобальный символ "% s" требует явного имени пакета
(F) Вы сказали, что "использовать строгий" или "использовать строгий ВАР", который указывает, что все переменные должны быть либо лексически охвачены (используя «мое», либо «состояние»), объявленные заранее с помощью «нашего» или явно квалифицированные, чтобы указать, в какой пакет находится глобальная переменная (с помощью «::»).
Чтобы конкретно сказать, что вызвало это в коде, вам нужно будет опубликовать свой код.
Ошибка выводимого и ваш скрипт останавливается, потому что у вас есть use strict
или производные от него. Ошибка встречается потому что ваша программа вызывает переменную из области видимости.
Вы, возможно, использовали мой или локальный внутри суб процедуры/функции, но пытаются использовать его в другом порядке, или вне вызова функции.
sub foo{ my $bar=0; our ($soap) = 1; } foo(); print $bar , "\n"; # does not work w/ strict -- bar is only in the scope of the function, not globally defined print $main::bar , "\n"; # will run, but won't be populated print $soap , "\n"; # does not work w/ strict -- the package isn't defined print $main::soap , "\n"; # will run and work as intended because of our
Вы используете use strict;
заявления означают ваши коды должны быть в пределах правил написания перл команд.
Какое регулирование написания команд Perl нарушается? – alex
Это также может случиться, когда заявка не завершена.
use strict;
sub test;
test()
# some comment
my $x;
Perl Теперь жалуется следующее сообщение об ошибке:
my "
Global symbol "$x" requires explicit package name
Ошибка не в декларации "мой", но в точку с запятой (;
) в test()
.
Спасибо! Я рвал волосы. – Zack
с использованием переменных состояния без use feature "state"
или use v5.10
, если ключевое слово не записано как состояние CORE ::.
В самом деле, если вы используете use strict;
и где вы пропустите ;
в конце заявления, то следующие утверждения (они имеют идеальный синтаксис) может поднять Глобальный символ требует имя явного пакета также.
- 1. Глобальный символ требует явного пакета
- 2. Глобальный символ «% s» требует явного имени пакета
- 3. Глобальный символ «% properties» требует явного имени пакета
- 4. Perl - Глобальный символ требует имени явного пакета
- 5. Глобальный символ требует явного имени пакета perl
- 6. Глобальный символ «% CustomerCompanyName» требует явного имени пакета
- 7. Глобальный символ «$ queryDelete» требует явного имя пакета
- 8. Perl: глобальный символ требует явного названия пакета
- 9. Ошибка открытия файла - Глобальный символ «$ infilename» требует явного имени пакета
- 10. Глобальный символ «$ line» и «$ addr» требует явного имени пакета
- 11. Глобальный символ «% formsequence» требует явного имени пакета в строке 37
- 12. «Глобальный символ требует явного имени пакета», даже если объявлена переменная
- 13. Perl: Ошибка Глобальный символ требует явного имени пакета
- 14. Perl: Глобальный символ «% s» требует явного имени пакета
- 15. Perl Global символ требует явного имени пакета
- 16. переменные «требует явного пакета» вопрос имени
- 17. Perl требует явного имени пакета
- 18. Печать переменных и «глобальный символ $ XXX требует явного пакета»
- 19. perl script возвращает ошибку глобальный символ требует явного пакета
- 20. Глобальный символ «$ земля» требует четкого определения имени пакета
- 21. Ошибка глобального символа требует явного имени пакета
- 22. Perl - Глобальная переменная требует явного пакета
- 23. Perl - Глобальный символ $ DIR требует явного имени пакета (почему я не могу напечатать вывод?)
- 24. Почему Perl говорит, что глобальный символ «SYMBOL» требует явного имени пакета в строке PROGRAM.pl X?
- 25. Почему мой скрипт Perl жалуется на «глобальный символ» $ connection «требует явного имени пакета»?
- 26. Не удается найти ошибку «Глобальный символ @xx требует явного имени пакета»
- 27. Не удается получить элементы из хэша, получить глобальный символ требует явного имени пакета
- 28. Почему мой скрипт Perl жалуется на «Глобальный символ» $ random_name «требует явного имени пакета»?
- 29. Объяснение 'global symbol требует явного имени пакета'
- 30. Perl Ошибка: Глобальный символ требует четкого определения имени пакета
Образец кода perl? См. Http://stackoverflow.com/q/4257179/10468 или поиск вопросов по модулям perl. См. Также (offsite) http://www.sitepoint.com/forums/showthread.php?501379-Perl-require-and-variables – DarenW