2011-11-28 136 views
-1

我有一個變量$ data,其中包含一堆數據;我想,所以我寫的代碼像多模式匹配失敗

if ($data =~ m/"Restore actions:"|"Setting Changes:"/) 

馬赫如果任一出現在變量兩個定形的條件爲真,我把打印語句在其他條件

遺憾的是它總是會在否則即使這兩個模式存在於變量中。

下面

是由$數據變量的數據包含

sd: Save time: Thu ... 
sd: ... 
sd: Restore actions: 
sd: ... 
sd: Setting Changes: 
sd: ... 
+0

試圖擦除歷史記錄是沒有意義的。它仍然在[這裏](http://stackoverflow.com/posts/8292585/revisions)。更糟糕的是,改變它,所以問題和答案是沒有意義的。 – ikegami

+0

此外,聲稱你擁有「yinst」這個詞只是簡單的愚蠢。如果你不想讓人知道你使用'yinst',不要告訴他們。 – ikegami

+0

如果我用我自己的話或改變問題,或者它是愚蠢的;這是我的不屬於愚蠢的一部分,就像一個非常愚蠢的紳士....我必須說你得到了我的消息 – user1068861

回答

3

試試這樣說:

if ($data =~ m/(Restore actions:|Setting Changes:)/) 
3

您包括沒有出現在你想匹配的文本引號。

if ($data =~ /Restore actions:|Setting Changes:/) 

和更精確的

if ($data =~ /^sd: (?:Restore actions|Setting Changes):/m) 

會做。