2

我有一个 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 完全是新手,真的卡住了。请帮我。

编辑:所以模块的名称是 DB.pm,文件夹的名称现在是 GUI,我use DB在我的脚本中使用,仍然不起作用,我应该在哪里保存 DB.pm 文件?

4

2 回答 2

3

use HA;做几件事。@INC首先,它在 perl 库路径 ( )中找到文件 HA.pm。其次,它调用HA::->import()允许 HA 模块进行任何它想要的初始化/导出;这依赖于与其文件名匹配的模块包。如果没有,这个初始化被悄悄地跳过(import即使方法不存在,对方法的方法调用也不会产生错误)。

因此,在您想要的包上显式调用导入,或使包名与文件名匹配。

于 2013-10-31T22:37:15.423 回答
2

Perl 不明白~,请参阅如何在 Perl 中找到用户的主目录?

您还需要提供use lib所在的目录GUI/DB.pm并使用GUI::DB

use lib $ENV{HOME}."/Downloads";
use GUI::DB;
于 2013-11-01T07:38:56.433 回答