我之前有use Foo;
使用我編寫的模塊,並且使用了使用Exporter.pm導出的方法和變量。從嚴格要求的模塊中使用導出的變量
我用require
替換了use
,以便在模塊導入時有一定的靈活性。我現在得到幾十個錯誤,都說明這些符號「需要明確的包名稱」。
我知道我可以爲每個添加明確的方法名稱,但也有不少。
有沒有辦法給這些別名一次,這樣以後我可以每次都使用沒有顯式包的符號?
我之前有use Foo;
使用我編寫的模塊,並且使用了使用Exporter.pm導出的方法和變量。從嚴格要求的模塊中使用導出的變量
我用require
替換了use
,以便在模塊導入時有一定的靈活性。我現在得到幾十個錯誤,都說明這些符號「需要明確的包名稱」。
我知道我可以爲每個添加明確的方法名稱,但也有不少。
有沒有辦法給這些別名一次,這樣以後我可以每次都使用沒有顯式包的符號?
「我加載在一個配置文件中指定的位置的模塊,所以它在運行時做」
好了,但它不已在運行時可以這樣做你是問錯了問題
做這個
use strict;
use warnings 'all';
use constant CONFIG_FILE => '/path/to/config_file';
my $libs;
BEGIN {
open my $fh, '<', CONFIG_FILE or die $!;
chomp($libs = <$fh>);
}
use lib $libs;
use MyLib; # MyLib.pm is in the directory specified in config_file
您需要在符號被編譯器遇到之前導入這些符號。
您可以更快地加載符號。
use Foo;
sub moo { ... $SymbolImportedFromFoo ... }
您可以稍後編譯提及。
eval(<<'__EOI__') or die [email protected];
use Foo;
sub moo { ... $SymbolImportedFromFoo ... }
1;
__EOI__
調用'import'方法。 – toolic
@toolic導入方法不能解決我的問題,但現在我正在考慮這個問題,我可能會混淆兩個問題。我的IDE給我編譯時錯誤,我現在無法運行代碼來確認是否我會得到運行時錯誤,或者如果這是純粹的編譯器不知道我將從哪裏導入(導入目錄是由配置文件) – dsollen
總是有'Foo :: var'代替。或者使用BEGIN塊。或者使用類似FindBin的東西來進行編譯時路徑評估 – Sobrique