2013-12-22 81 views
0

我對Perl很陌生,我試圖弄清楚如何讓這個東西起作用。Perl命令行打印 - 在命令行測試正則表達式

我發現了一個例子,在這個線程:Perl Regex - Print the matched value

這裏是我想與之合作的例子:我試着運行它使用CMD

perl -e '$str="the variable Xy = 3 in this case"; print $str =~ /(Xy = 3)/;' 

,但產生這個錯誤:

「無法找到字符串終結符」「」EOF之前的任何位置在-e行1。

當我在powershell中運行它時,什麼也沒有發生。

我的最終目標是在命令行設置一個變量,運行regexp查找(有時替換)並打印結果。這樣我就不必每次寫一個正則表達式模式就寫一個腳本。

我使用調試器試過,但我做這個設置變量後,當什麼也沒有發生:

print $str =~ /(Xy = 3)/; 

回答

0

好吧,但是我想它的PowerShell的。我不得不逃避雙引號。

perl -e '$str=\"the variable Xy = 3 in this case\"; print $str =~ /(Xy = 3)/;' 

而且同樣適用於CMD除了我不得不更換單引號用雙引號,因爲單引號不是字符串分隔符那裏。

perl -e "$str=\"the variable Xy = 3 in this case\"; print $str =~ /(Xy = 3)/;" 
+1

我會將字符串定義更改爲qq {}而不是「」以避免轉義。 perl -e「$ str = qq {在這種情況下變量Xy = 3}; print $ str =〜/(Xy = 3)/;」 – Miller

1

這是更好地把你的語句Perl腳本內對Windows環境,因爲你需要爲你的大部分東西的Perl雙引號,但逃避在命令行上最終變得混亂。