我有一个环境变量 $ 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}'};
答案 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 } );