如何包含包含所有必需的Perl模块名称的文件?

时间:2012-11-15 07:30:57

标签: perl perl-module

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脚本中?

感谢。

3 个答案:

答案 0 :(得分:7)

您可以使用

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

do。请务必在文件底部加{4}。

答案 1 :(得分:6)

创建自己的模块。但是,如果您在此模块中创建包,那么strftime等将被导入另一个命名空间。你可以做litle hack来做这个smiple:

MyModules.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;

建议不要使用执行 require 命令,因为它们不会检查脚本启动时的语法。当然你可以将它们放入BEGIN区块,但我认为它很棘手,一般BEGIN{ require ..}use

相同

UPD: ikegami 注意到当你从许多模块中使用它时它无法正常工作。无论问题启动者的信息(他想从主脚本中使用它),生病添加信息如何从许多模块中使用它,所以我的朋友可以感觉更好。添加到MyModules.pm的末尾:

delete $INC{'MyModules.pm'};
1;

答案 2 :(得分:3)

您可以查看Toolkit模块。