use 5.010; print "Would you like to play a game?"; chomp($_=<STDIN>); if (/yes/i) { say "In that case,I recommend that you to bowling."; }
默認狀況下,點號(.)沒法匹配換行符,若是但願點號能匹配這些換行符,那麼/s修飾符能夠完成這個任務。spa
use 5.010; $_="I saw Barney\ndown at the bowling alley\nwith Fred\nlast night."; if (/Barney.*Fred/s) { say "That string mentions Fred after Barney!"; }
容許咱們在模式裏隨意加上空白符,從而使它更易閱讀,理解。
因爲加上/x後模式裏能夠隨意插入空白,因此原來表示空白和製表符自己的空白符就失去了意義,perl會直接忽略。
但咱們總能夠經過轉義方式變通實現,\s(或者\s*,或是\s++),表示匹配空白符。
Perl 還會把模式中出現的註釋看成空白符直接忽。code
/ -? #一個無關緊要的減號 [0-9]+ #小數點前必須出現一個或多個數字 \.? #一個無關緊要的小數點 [0-9]* #小數點後面的數字,有沒有都不要緊 /x #字符串末尾
若是須要對單次匹配使用多項修飾符,只須要把它們接在一塊兒寫在模式末尾(不用在乎前後順序): blog
if (m{ barney # 小夥子barney .* # 夾在中間無論什麼字符 fred # 大嗓門的fred }six) { # 同時使用 /s /i /x print "That string menthions Fred after Barney!\n"; }
Perl 5.14開始增長一些用於通知perl如何解釋字符意義的修飾符。
總共有三種字符解釋方式:ASCII Unicode locale 修飾符/a告訴Perl採起ASCII模式,而/u則表示採起Unicode方式,
最後/l表示聽從本地化語言的設定。 若是不提供這類修飾符,Perl會根據perlre文檔描述的方式採起最爲妥帖的行爲。而經過使用
修飾符,你能夠顯示制定程序確切的行爲。文檔
use 5.014; /\w+/a #僅僅是 A-Z a-z 0-9 _ 這些字符 /\w+/u #任何Unicode當中定義爲單詞的字符 /\w+/l #類同於ASCII的版本,但單詞字符的定義取決於本地化設定