編輯 對不起,這裏是我更新的問題。導入一個庫子程序,同時在perl中使用FindBin
我在我的perl腳本使用FindBin這樣的:
use FindBin qw($Bin);
use lib "$Bin/../lib";
use multi_lib qw(say_hello_world);
這工作:
multi_lib::say_hello_world();
但這並不:
say_hello_world();
EDIT 2
這是multi_lib.pm的樣子:
package multi_lib;
use strict;
use warnings;
use 5.010;
require Exporter;
my @ISA = qw(Exporter); # removing `my` causes an error!
my @EXPORT_OK = qw(say_hello_world); # removing `my` causes an error!
sub say_hello_world {
say "hello world!";
}
p.s. 我不知道@ISA
代表什麼,如果加入my
是OK ...我跟着Exporter
的preldoc。
編輯3 我想我解決它通過use strict
之前移動@EXPORT_OK
。在我的腳本開頭,我習慣於把use strict
放在正確的位置,但我想這不是去這裏的方法(?)。不管怎麼說,這個工作:
use Exporter 'import';
@EXPORT_OK = qw(say_hello_world);
use strict;
...
我仍然希望得到一些解釋,究竟是怎麼回事,什麼是出口子程序(像我一樣?)的推薦方式。
是從multi_lib實際導出的say_hello_world? – DVK 2010-08-30 14:32:37
是的,我認爲是。請參閱編輯2. – 2010-08-30 14:39:09