如何在我的基本Perl脚本中包含另一个Perl脚本?
我有一个主要源文件test.pl
,我希望在其中包含辅助sóurce文件config.pl
。
在Perl中实现此目的的标准方法是什么?
答案 0 :(得分:2)
(我猜测名为config.pl
的程序设置了您要在test.pl
中访问的配置值。您不能在问题中明确说明。)
一个简单的例子。如果config.pl
看起来像这样:
#!/usr/bin/perl
$some_var = 'Some value';
然后你可以写test.pl
看起来像这样:
#!/usr/bin/perl
use feature 'say';
do './config.pl';
say $some_var;
但出于很多原因,这是一个可怕的想法。同样重要的是,当您向其中一个文件添加use strict
和use warnings
时,它就会停止工作(您的目标应该是所有1}中的use strict
和use warnings
强大的Perl代码。)
那么更好的方法是什么?将您的配置转换为一个返回哈希的适当模块(我上面的示例中只有一个标量变量,但是哈希为您提供了在单个变量中提供多个值的方法)。一个简单的方法可能看起来像这样。
名为MyConfig.pm
的模块:
package MyConfig;
use strict;
use warnings;
use parent 'Exporter';
our @EXPORT = qw[config];
sub config {
my %config = (
some_var => 'Some value',
);
return %config;
}
1;
这样test.pl
:
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
use FindBin '$Bin';
use lib $Bin;
use MyConfig;
my %config = config();
say $config{some_var};
完成这项工作之后,您可以添加改进,例如从外部文件解析%config
哈希值(可能存储在JSON中),然后为不同的环境(例如开发与生产)允许不同的配置。
它比你目前的方法多一点工作,但它更灵活。您可以使用strict
和warnings
。