在我的父Perl脚本中包含另一个脚本

时间:2018-04-26 07:03:56

标签: perl include

如何在我的基本Perl脚本中包含另一个Perl脚本?

我有一个主要源文件test.pl,我希望在其中包含辅助sóurce文件config.pl

在Perl中实现此目的的标准方法是什么?

1 个答案:

答案 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 strictuse warnings时,它就会停止工作(您的目标应该是所有use strict和use warnings

那么更好的方法是什么?将您的配置转换为一个返回哈希的适当模块(我上面的示例中只有一个标量变量,但是哈希为您提供了在单个变量中提供多个值的方法)。一个简单的方法可能看起来像这样。

名为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中),然后为不同的环境(例如开发与生产)允许不同的配置。

它比你目前的方法多一点工作,但它更灵活。您可以使用strictwarnings