星期日, 1月 22, 2012

Perl 的 regular exprssion 可以用 (?...) 設定參數

我遇到的問題很簡單,就是這樣的 code:

say 'yes' if 'Test' =~ $a;

我想要在 $a 做出 'Test' =~ /test/i; 的效果,也就是找方法帶 modifier 進去。

第一個想到的方法是用 eval() 做:eval("'Test' =~ $a;"),但這個方法問題很多... 因為我的 $a 是從設定檔讀進來,我並不希望給予奇怪的權限。

Perl 裡可以用 inline modifier 解決,也就是把 regular exprssion 前面加上 (?i),其中 i 就是 modifier,變成 (?i)^test

對於其他用 perl 寫的程式也可以這樣設定 regular exprssion,另外 PCRE 也可以吃,所以 Postfix 設定時如果用 pcre:$configuration_directory/xxx 也可以這樣設定 (regexp:... 就不確定了)。

沒有留言: