通过配置文件以双引号写入perl中的Access环境变量

通过配置文件以双引号写入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

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

乙二醇 在配置文件中:
path='$ROOT/abc/somepath'

在Perl文件中,当我在back ticks
config->{$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 } );