6

perl 脚本包含脚本开头的所有模块名称。

前任:

use strict;
use XML::Parser;
use XML::Simple;
use DBI;
use DBD::DB2::Constants;
use POSIX qw( strftime );
use Storable qw(dclone);
use Data::Dumper;
use Carp;

如何将所有模块名称保存在另一个文件中并将该文件包含在主 perl 脚本中?

谢谢。

4

3 回答 3

7

您可以使用

BEGIN { do 'filename.pl' or die $@ }

。确保包含1;在文件的底部。

于 2012-11-15T07:38:12.760 回答
6

创建自己的模块。但是,如果您在此模块中制作包,则这些strftime等将被导入另一个命名空间。你可以做一些小技巧来做这个微笑:

我的模块.pm:

use strict;
use XML::Parser;
use XML::Simple;
use DBI;
use DBD::DB2::Constants;
use POSIX qw( strftime );
use Storable qw(dclone);
use Data::Dumper;
use Carp;

请注意,此 .pm 中没有package关键字。你的脚本:

use MyModules;

将此 .pm 放入与脚本相同的目录或在运行时添加模块搜索路径:

use lib '/my_modules_dir/';
use MyModules;

不推荐使用dorequire命令,因为它们不会在脚本启动时检查语法。当然,您可以将它们放入 BEGIN 块中,但我认为它很棘手,通常BEGIN{ require ..}use

UPD:ikegami注意到当您从许多模块中使用它时它无法正常工作。不管问题启动器的信息(他想从主脚本中使用它),我都会从许多模块中添加如何使用它的信息,这样我的朋友会感觉更好。添加到 MyModules.pm 的末尾:

delete $INC{'MyModules.pm'};
1;
于 2012-11-15T07:40:10.037 回答
3

您可能会查看Toolkit模块。

于 2012-11-15T12:28:06.983 回答