我正在尝试运行Perl脚本,这会产生以下错误:
正则表达式中未转义的左括号在正则表达式中是非法的;标记为< - HERE in m / ^(。)\ $ ENV {< - HERE(。)}(。*)$ / at / root / cesm1_2_0 / scripts / ccsm_utils / Case.template / ConfigCase.pm第1180行。 在./create_newcase第361行的require中编译失败
违规代码是:
if($text =~/^(.*)\$ENV{(.*)}(.*)$/){
...
}
代码中早先出现了一个问题,原因是"使用了比该代码支持的更新的Perl版本" (参见:https://bb.cgd.ucar.edu/machine-configuration-and-generating-domain-file),所以我希望Perl中的正则表达式语法已经改变。
有人可以将此行翻译为与当前版本的Perl兼容吗?
答案 0 :(得分:4)
{
现在始终被视为正则表达式元字符。如果未转义的角色是非法的,您可以通过逃避它来使其合法化。
$text =~/^(.*)\$ENV\{(.*)}(.*)$/
^---- new character
答案 1 :(得分:2)
试试这个:
if ($text =~/^(.*)\$ENV\{(.*)\}(.*)$/) {