2016-09-15 42 views
1
open IN, "in.txt"; 
open OUT, ">out.txt"; 

print OUT unless m[^foo] while <IN>; 

爲什麼上面的代碼不能編譯?如何正確使用正則表達式

+0

只是一些術語,可以幫助你在未來的搜索:你'重新調用反轉while語句是語句修飾符。 – ThisSuitIsBlackNot

回答

6

問題是,允許您將if/unless/while作爲後綴寫入一行代碼的表示法只能在該行中使用一次。所以,你必須與替換最後一行在你的代碼:

while (<IN>) { 
    print OUT unless m[^foo]; 
} 

這種情況下,另一種是使用一個or

m[^foo] or print OUT while <IN>; 
+0

可以使用括號來在一行中允許多個反向語句嗎? – CJ7

+0

@ CJ7不幸的是,不幸的是,沒有辦法用大括號或括號來代替上面給出的第一個片段。 – redneb