模塊:./FOO/BAR/Foobar.pm
的Perl:麻煩與出口商
use strict;
use warnings;
package Foobar;
our($VERSION , @ISA , @EXPORT , @EXPORT_OK , %EXPORT_TAGS , $FOO);
BEGIN {
require Exporter;
@ISA = qw(Exporter);
@EXPORT_OK = qw(&foo);
}
sub foo {
print "Loaded\n";
$FOO = q{some val};
}
1;
計劃:./Caller.pl
#!/usr/bin/perl
use strict;
use warnings;
use FOO::BAR::Foobar qw/foo/;
Foobar::foo(); # works
foo(); # errors out - can't find &main::foo
我會列出所有我試過的東西,但有一個很多 - 正如你所看到的,我有更多的全球Foobar全球比列出。我已經刪除了BEGIN,並按照PerlMonks上的[舊]帖子中的建議完成了其他一些事情。
我想我曾經在某處讀過,如果軟件包名稱與模塊名稱相同,Exporter默認以某種方式工作。我不知道是否將模塊放在子目錄中可能會改變該行爲(?)。不過,我很想看看我是如何搞砸的。
+1 ---似乎我懷疑有一些優點。有沒有其他重命名包的方法? – vol7ron
我回答了我上面的問題(在評論中)。我會接受這個答案 - 儘管如此,我仍然希望找到一些關於導入不同包的變量/函數的資源 – vol7ron