我有一個Perl腳本,它可以在HPUX 11i v3上的Perl 5.005下正常運行,並且在我的Ubuntu 11.04盒子的Perl 5.10下會導致一個小問題。爲什麼Perl在這裏抱怨一個未終止的字符串?
它歸結爲這樣一行:
open (CMD, "do something | grep -E 'sometext$' |");
(它實際上捕捉ps -ef
輸出,看是否有進程在運行,但我不認爲這很重要(一))。
現在這個運行在HP-UX環境很好,但是,當我嘗試一下在Ubuntu下,我得到:
sh: Syntax error: Unterminated quoted string
通過插入豐富的調試語句,我跟蹤它到該問題的行,然後開始刪除字符一個接一個,直到它停止抱怨。幸運的是,$
曾是我的第一個,它停止了給我的錯誤,所以後來我改了行到:
open (CMD, "do something | grep -E 'sometext\$' |");
它工作得很好(Linux下反正 - 我沒有測試過,關於HPUX自我今天無法訪問那臺機器 - 如果它工作正常,我會用這種方法,但我仍然想知道爲什麼它是一個問題)。
所以看起來很明顯,$
是「吞嚥」在我的Linux環境下的結束單引號,但顯然不是在HPUX上。
我的問題很簡單,爲什麼?當然在5.005和5.10之間沒有任何大的變化。或者是否有某種我缺少的配置項?
(一)但是,如果你知道一個更好的方式來做到這一點沒有外部CPAN模塊(即,只有基線的Perl 5.005安裝),我很樂意去了解它。
「當然有不5.005和5.10之間的巨大變化,」這十一點滄桑。這兩個版本之間有一些變化。看看各種perldelta手冊頁。 – 2011-12-29 08:49:36