想知道是否有人可以向我深入解釋這個片段
(my $bytearray_val_ascii = $in) =~ s/([a-fA-F0-9]{2})/chr(hex $1)/eg;
uj5u.com熱心網友回復:
這s///是一個正則運算式替換運算子,該=~運算子系結到其左側的變數
$var =~ s/pattern/replacement/;
匹配變數中的模式并用替換字串$var執行替換。此操作可以通過關閉分隔符后面的修飾符進行調整和調整(也可以嵌入到模式中)。?
這會更改“就地”變數——在$var更改此陳述句之后。$var將更改的字串保存并存盤在另一個變數中的習慣用法是分配$var給另一個變數并“然后”更改它(通過括號對操作進行排序),所有這些都在一個陳述句中。而常用的成語就是在那個陳述句中也引入一個新變數
(my $new_var = $original) =~ s/.../.../;
現在$original沒有改變,而改變的字串在$new_var(如果模式匹配)。
由于5.14r中引入了(非破壞性)修飾符,因此現在不需要這個成語
my $new_var = $original =~ s/.../.../r;
未$original更改,回傳更改后的字串,然后分配給$new_var。
正則運算式本身匹配并捕獲兩個連續的字母數字字符,hex在它們上運行,然后chr在hex回傳的內容上運行,并使用該結果替換它們。它不斷地通過字串來處理它找到的所有這樣的對。
?
這里的修飾符是: e,這使得替換端被評估為代碼,它回傳的內容用于替換,g這使得它繼續搜索和替換整個字串(不僅僅是第一次pattern出現)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/439353.html
標籤:perl
