[英]Undefined subroutine in perl &library1::func1
我正在從library1.pm中的library2.pm調用函數(func1)。 由於我在library1中聲明了“ use library2”,因此該函數簡稱為&func1()。 但這會引發錯誤,因為未定義的子例程。 但是當我將該函數稱為“&library2 :: func1”時,它正在工作。 我在這里缺少任何Perl軟件包嗎?
您導出功能了嗎? 由於您沒有發布任何代碼,很難說出您丟失了什么! 我可以解釋一下,如果我知道缺少的東西,為什么您需要缺少的東西。 取而代之的是,您必須解決所需的示例。
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忽略您調用的subs的原型。
順便說一下,小寫的模塊名稱在技術上保留給Perl使用。 但更重要的是,約定為編譯指示模塊(影響語言的模塊和實際上受到詞法作用域的模塊)保留了小寫的模塊。 請避免使用小寫的模塊名稱。
順便說說,
use library2 qw( func1 );
通常比
use library2;
因為更容易查看在何處定義了子項,並且在模塊的默認導出發生更改時也可以防止出現意外情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.