[英]Perl: Why is this expression not working with the new version of Perl?
我正在嘗試運行Perl腳本,該腳本會產生以下錯誤:
正則表達式中未轉義的左大括號在正則表達式中是非法的; 在/root/cesm1_2_0/scripts/ccsm_utils/Case.template/ConfigCase.pm第1180行中以<-HERE標記在m /^(.)\\$ ENV {< -HERE (。 )}(。*)$ / 。在./create_newcase行361的要求中編譯失敗
令人反感的代碼是:
if($text =~/^(.*)\$ENV{(.*)}(.*)$/){
...
}
代碼中存在一個較早的問題,該問題是由於“使用了比該代碼支持的版本更高的Perl版本”(請參閱: https : //bb.cgd.ucar.edu/machine-configuration-and-generating-domain-file ) ,因此我希望Perl中的regex語法已更改。
有人可以翻譯此行以與當前版本的Perl兼容嗎?
{
現在始終被視為正則表達式元字符。 如果未轉義的字符是非法的,則可以通過轉義使其合法。
$text =~/^(.*)\$ENV\{(.*)}(.*)$/
^---- new character
嘗試這個 :
if ($text =~/^(.*)\$ENV\{(.*)\}(.*)$/) {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.