Perl正则表达式奇怪的行为

Pra*_*ani 1 regex perl

方法1:

$C_HOME = "$ENV{EO_HOME}\\common\\";
print $C_HOME;
Run Code Online (Sandbox Code Playgroud)

给出C:\ work\System11R1\common\

即环境变量正在扩展.

方法2:

解析具有C_HOME = $ ENV {EO_HOME}\common \的属性文件

while(<IN>) {
    if(m/(.*)\s+=\s+(.*)/)
    {
        $o{$1}=$2;
    }
}

$C_HOME = $o{"C_HOME"};
print $C_HOME;
Run Code Online (Sandbox Code Playgroud)

这给出了$ ENV {EO_HOME}\common \的输出

即环境变量没有扩展.

如何在第二种情况下确保环境变量得到扩展.

Igo*_*bin 7

问题在于:

    $o{$1}=$2;
Run Code Online (Sandbox Code Playgroud)

当然perl $2在读取时不会自动评估.

如果需要,您可以手动评估它:

    $o{$1}=eval($2);
Run Code Online (Sandbox Code Playgroud)

但是从安全的角度来看,你必须确保它没问题.