通过配置文件

时间:2015-05-20 11:35:20

标签: perl environment-variables

我有一个环境变量 $ ROOT 。例如。 $ ROOT =“/ someroot”通过配置文件参数在Perl文件中访问它。

例如 在配置文件中: path = '$ROOT/abc/somepath'

在Perl文件中使用此变量时,我在后面的时间内编写config-> {$ path} {$ 1}} $ ROOT的值是可访问的,即/ someroot / abc / somepath但是当用双引号时“config- > {$ path}“结果是$ ROOT / abc / somepath。 我需要用双引号来打开文件:config->{$path}如何用双引号实现config-> {$ path}的值。

P.S我还使用了$ ENV {'config-> {$ path}'};

3 个答案:

答案 0 :(得分:1)

尝试

my path = $ENV{"ROOT"} . config->{$path};
open(filehandle, path);

但现在您不必在$ ROOT之前配置路径。

  

配置文件:path =' / abc / somepath'

答案 1 :(得分:0)

你在找这个吗?

sub get_conf {
   my ($config, $key) = @_;
   my $val = $config{key};
   return undef if !defined($val);

   $val =~ s{\$ROOT\b}{$ENV{ROOT}}g;
   return $val;
}

my $path = get_conf(config, 'path');

答案 2 :(得分:0)

要获得更通用的解决方案,请尝试使用String::Interpolate上的CPAN个模块之一。我赞成String::Interpolate::RE(免责声明:我写的):

use String::Interpolate::RE 'strinterp';

my $path = strinterp( $config{path}, {}, { useENV=> 1 } );