方法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 \的输出
即环境变量没有扩展.
如何在第二种情况下确保环境变量得到扩展.
问题在于:
$o{$1}=$2;
Run Code Online (Sandbox Code Playgroud)
当然perl $2在读取时不会自动评估.
如果需要,您可以手动评估它:
$o{$1}=eval($2);
Run Code Online (Sandbox Code Playgroud)
但是从安全的角度来看,你必须确保它没问题.