通过配置文件以双引号写入perl中的Access环境变量
我有一个环境变量$ROOT。例如,$ROOT=“/someroot”在Perl文件中通过配置文件参数访问 乙二醇 在配置文件中:通过配置文件以双引号写入perl中的Access环境变量,perl,environment-variables,Perl,Environment Variables,我有一个环境变量$ROOT。例如,$ROOT=“/someroot”在Perl文件中通过配置文件参数访问 乙二醇 在配置文件中: path='$ROOT/abc/somepath' 在Perl文件中,当我在back ticksconfig->{$path}中写入config->{$path}时,可以访问$ROOT的值,即/someroot/abc/somepath,但在双引号“config->{$path}”中,结果是$ROOT/abc/somepath。 我需要在打开文件时用双引号写这个:op
path='$ROOT/abc/somepath'
在Perl文件中,当我在back ticksconfig->{$path}
中写入config->{$path}时,可以访问$ROOT的值,即/someroot/abc/somepath,但在双引号“config->{$path}”中,结果是$ROOT/abc/somepath。
我需要在打开文件时用双引号写这个:open(filehandle,“config->{$path}”)代码>如何在双引号中实现config->{$path}的值
另外,我还使用了$ENV{'config->{$path}} 试试看
my path = $ENV{"ROOT"} . config->{$path};
open(filehandle, path);
但现在您不必在配置的路径前面加$ROOT
配置文件:path='/abc/somepath'
你在找这个吗
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');
要获得更通用的解决方案,请尝试上的一个模块。我赞成(免责声明:我写的):
use String::Interpolate::RE 'strinterp';
my $path = strinterp( $config{path}, {}, { useENV=> 1 } );