我在library1.pm中調用library2.pm中的函數(func1)。這個函數簡稱爲& func1(),因爲我在library1中聲明瞭「use library2」。但是這是拋出一個錯誤作爲未定義的子程序。但是當我將這個函數調用爲「& library2 :: func1」時,它正在工作。我在這裏錯過任何Perl包嗎?在perl和library1中未定義的子程序:: func1
回答
您是否輸出該功能?由於您沒有發佈任何代碼,因此很難說出您錯過的內容!如果我知道這是什麼,我可以解釋爲什麼你需要缺少什麼。相反,你必須解決一個需要的例子。
library2.pm
應包括:
package library2;
use strict;
use warnings;
use Exporter qw(import);
our @EXPORT = qw(func1);
...
sub func1 { ... }
...
1;
library1.pm
應包括:
package library1;
use strict;
use warnings;
use library2;
...
func1(...)
...
1;
順便說一句,語言的名稱是Perl的,不是PERL。這不是一個縮寫。
順便說一句,你應該停止在子調用前使用&
;沒有理由告訴Perl忽略你調用的潛艇的原型。
順便說一句,小寫模塊名稱在技術上保留供Perl使用。但更重要的是,公約保留了用於編譯指示模塊(影響語言的模塊以及詞彙範圍有效的模塊)的小寫模塊。請避免小寫模塊名稱。
順便說一句,
use library2 qw(func1);
一般比
use library2;
,因爲它更容易看到潛艇被定義好了,它可以防止意外,如果一個模塊的默認出口不斷變化。
你提到的語法是絕對正確的。但是當我在library1中調用func1而沒有指定library2 :: func1時,則出現錯誤。我想知道它的確切原因,並感謝您的回覆。 –
因爲您沒有發佈任何代碼,所以很難說出您錯過了什麼!如果我知道這是什麼,我可以解釋爲什麼你需要缺少什麼。相反,你必須解決一個需要的例子。如果您要提供問題的演示,我們將能夠提供更多信息。或者至少,您可以告訴我哪些代碼發佈的代碼行中缺少這些代碼。 – ikegami
沒關係。非常感謝你 –
- 1. Perl:未定義的子程序和主
- 2. 未定義的子程序和main :: promt
- 3. ()在Perl的子程序定義中完成了什麼?
- 4. 我應該如何在Perl中定義'靜態'子程序?
- 5. 子程序重新定義了Perl中的錯誤
- 6. 如何處理子程序重新定義錯誤在Perl
- 7. Perl HTML ::解析器錯誤;未定義子程序及主要:: 1
- 8. Perl中的未定義數組
- 9. 子程序或函數程序未定義
- 10. c程序中未定義的引用
- 11. 本地$ _在Perl子程序中
- 12. 在Perl子程序中修改變量
- 13. 定義變量(長)在子程序內更改未更新
- 14. 定義在Perl
- 15. f2py的問題:在子程序中對模塊的未定義引用
- 16. 電子未定義
- 17. Prolog的未定義的程序
- 18. 複製文件時未定義的子程序調用
- 19. 未定義的子程序LWP ::協議:: HTTPS ::插座:: can_read稱爲
- 20. 在Perl中捕獲未定義的值訪問
- 21. 在Perl中,如何檢查未定義的OR空白參數?
- 22. 如何在Perl中未定義哈希鍵的值?
- 23. Perl - 在類中捕獲未定義的鍵?
- 24. 在perl中,箭頭引用了還未定義的密鑰?
- 25. 序列化程序未在XSQL配置文件中定義
- 26. 在簡單的Ruby程序中未定義的方法`id'
- 27. 在最小的C程序中未定義對「main」的引用
- 28. 未定義對象的未定義屬性(在if else子句中)
- 29. Perl中的子程序和腳本有什麼區別?
- 30. Perl在模塊中拋出了未定義的子例程,而不是正確的錯誤
請提供該問題的最小范例。 – ikegami