2015-10-14 95 views
2

中的perldoc這是實例發現:

$object->expect(15, '-re', "$str"); 

我要添加選項「我」的比賽。這是行不通的:

$object->expect(15, '-re', qr\$str\i); 

我一定要使用此格式:

$exp->expect($timeout, [ qr/$str/i, sub {}], $shell_prompt); 
+0

'qr \ $ str \ i'是反斜槓的錯字嗎? – toolic

+0

沒錯。對不起,錯字 –

回答

2

您可以嵌入指令到正則表達式本身:

$object->expect(15, '-re', "(?i)$str"); 

裁判:http://perldoc.perl.org/perlre.html#Extended-Patterns

+1

'qr/foo/i'實際上是'(?i:foo)'。 '(?i)foo'通常是等價的,但它依賴於Expect將模式嵌入'(?:...)'來限制不區分大小寫的範圍。 – ikegami

+0

它將依賴於不包含不匹配的右括號的$ str。我想我們必須首先假定它是一個格式正確的正則表達式,或者依靠其餘的代碼來捕捉錯誤。 –