我有一个perl模块DB.pm,里面有类似的东西:
package GUI::DB;
use strict;
use DBI;
use vars qw(@ISA @EXPORT);
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(fun);
sub fun {
my $dsn = "DBI:mysql:database=test";
return $dsn;
}
然后我写了test.pl:
#!/usr/bin/perl
use strict;
use warnings;
use lib '~/Downloads/GUI'; #Here is the path of the DB.pm module.
use DB;
my $aa = fun();
我一直试图修复它好几个小时,我试图使用评论perl -l /path/to/file aa.pl
并且它没有给我任何错误,但脚本根本没有运行,我纯粹是Perl的新手,真的卡住了。
请帮帮我。
use DB
,仍然无法正常工作,其中我应该保存DB.pm文件吗?
答案 0 :(得分:3)
use HA;
做了两件事。首先,它在perl库路径(@INC
)中找到文件HA.pm。其次,它调用HA::->import()
以允许HA模块执行它想要的任何初始化/导出;这取决于模块的包匹配其文件名。如果没有,则会静默跳过此初始化(即使方法不存在,对import
方法的方法调用也不会生成错误。)
因此,在所需的包上显式调用import,或使包名与文件名匹配。
答案 1 :(得分:2)
Perl不理解~
,请参阅How do I find a user's home directory in Perl?
您还需要向use lib
提供GUI/DB.pm
所在的目录并使用GUI::DB
:
use lib $ENV{HOME}."/Downloads";
use GUI::DB;