全局符號需要顯式包名?爲什麼會發生這種情況,以及可能導致此錯誤的各種情況是什麼?全局符號需要顯式包名
24
A
回答
22
看一看perldiag:
全球符號 「%s」 需要明確的包名
(F)你說: 「使用嚴格」 或 「使用嚴格瓦爾」這表明所有變量必須是詞法範圍的(使用「my」或「state」),事先使用「our」聲明,或明確限定全局變量所在的包(使用「::」)。
5
爲了具體說明是什麼導致它在你的代碼中,你需要發佈你的代碼。
的錯誤是輸出和你的腳本停止,因爲你有use strict
或它的衍生物。 錯誤發生因爲您的程序正在調用超出範圍的變量。
您可能在子程序/函數中使用了my或local,但正試圖在另一個程序或函數調用之外使用它。
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
-1
23
當以前的陳述未完成時也可能發生。
use strict;
sub test;
test()
# some comment
my $x;
的Perl現在抱怨與以下錯誤消息:
my "
Global symbol "$x" requires explicit package name
的錯誤不是在宣告 「我的」,但在在test()
缺少分號(;
)。
+2
謝謝!我正在撕掉我的頭髮。 – Zack 2016-09-01 23:52:35
0
使用不帶use feature "state"
或use v5.10
的狀態變量,除非關鍵字被寫爲CORE :: state。
0
其實兩者,如果你使用use strict;
和地方你在聲明的結尾錯過;
,那麼下面的語句(他們有完善的語法)可能會提高全局符號需要明確包名以及。
相關問題
- 1. 全局符號需要顯式包名perl
- 2. 「全局符號需要顯式包名」的說明
- 3. 即使聲明瞭變量,「全局符號也需要顯式包名」
- 4. 全局符號「%CustomerCompanyName」需要明確的包名
- 5. Perl的全局符號需要明確包名
- 6. 的Perl - 全局符號需要明確包名
- 7. Perl:全局符號「%s」需要明確的包名稱
- 8. 全局符號需要在perl腳本包名稱錯誤
- 9. 爲什麼Perl說全局符號「SYMBOL」需要在PROGRAM.pl行X處顯式包名?
- 10. 爲什麼我的Perl腳本抱怨「全局符號」$ random_name「需要顯式包名」?
- 11. 全球符號「%s」需要明確的包名
- 12. Perl腳本返回錯誤全局符號需要明確的包
- 13. node.js需要全局文件
- 14. PHP需要全局範圍
- 15. 全局符號不符號表
- 16. 需要包裝的「單引號」字符串的形式提交
- 17. 創建wordpress插件 - 全局和包含文件需要它
- 18. 需要獲取全局變量$ _REQUEST的名稱
- 19. asyncLocalStorage需要一個全局localStorage對象
- 20. 爲什麼coffeescript需要全局安裝?
- 21. 爲什麼GLfloat需要全局範圍?
- 22. 需要設置全局變量
- 23. 需要全局變量在php中
- 24. 我需要一個全局TextView?
- 25. 鎖是否需要聲明爲全局?
- 26. 需要用點符號
- 27. Antlr符號 - 需要示例
- 28. 全局樣式所有html按鈕只需要'class','id'或'name'
- 29. Supersimple超全局PHP形式的信息需要
- 30. 需要全局匹配幫助的JavaScript正則表達式
示例Perl代碼?請參閱http://stackoverflow.com/q/4257179/10468或在perl模塊上搜索問題。另請參見(異地)http://www.sitepoint.com/forums/showthread.php?501379-Perl-require-and-variables – DarenW 2012-04-12 17:31:42