繁体   English   中英

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

[英]How to include a file that contains all the required Perl module names?

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

谢谢。

您可以使用

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

一定要包括1; 在文件的底部。

创建自己的模块。 但是,如果您在此模块中创建包,那么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;

建议不要使用dorequire命令,因为它们不检查脚本启动时的语法。 当然你可以将它们放入BEGIN块但我认为它的方法很棘手,通常BEGIN{ require ..}use相同

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

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

您可以查看Toolkit模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM