我試圖用perl一個班輪只替換文件中第一次出現的模式。爲什麼變量被perl中的前一個命令替換?
>touch tmp
>perl -p -i.bak -e '++$seen if(!$seen && s/alpha/beta/);' tmp
之後我按下Enter鍵。屏幕上出現下面的消息。
perl -p -i.bak -e '++$seen if(tmpseen && s/alpha/beta/);' tmp
注意!$seen
得到了與tmpseen
取代。
這是怎麼發生的?
謝謝。
這是由於CSH。 '!$'擴展到前一個命令的最後一個參數。我假設。 – kjprice 2013-03-27 16:18:18
@kjprice的確如此。這似乎是這種情況。我現在能做什麼? – user13107 2013-03-27 16:21:20
@ user13107我不使用csh,但我在猜測'if(\!$ seen' will be – kjprice 2013-03-27 16:25:44