我撰寫了 perl 腳本,并分配了 $k="bag"。我在文本檔案中寫入 $k===1234,然后使用 perl 讀取檔案并將其保存在哈希中。但是我得到的輸出就像'$k' => '1234',但我希望得到'bag' =>'1234'。
文本檔案中的內容會自動保存為字串嗎?還是詞?但我希望它在一個變數中。因為有很多對需要保存在一個檔案中?如果有新的配對,則需要更新。是否可以在檔案中進行?或者我能做什么?
uj5u.com熱心網友回復:
當您在 Perl 中讀取檔案時,您將獲得檔案的內容。Perl不會將檔案的內容解釋為代碼,也不會替換變數。
相反,您必須自己替換其中的變數——本質上,您將創建自己的模板語言。如果您只想替換標量變數,這通常相當容易。核心思想是你必須創建一個包含變數的哈希(例如my %variables = (k => "bag"),然后在你的檔案內容上運行一個正則運算式來替換變數的出現:$contents =~ s/\$(\w )/$variables{$1}/g.
但是需要做出一些詳細的決定:
什么時候應該擴展變數——直接在讀取檔案時,還是在檔案結構被決議為哈希之后?
===如果變數包含分隔符,則在稍后階段擴展變數通常更安全。例如,要擴展散串列的鍵和值中的變數:my %expanded = map { s/.../.../gr } %parsed;請注意
/r標志的使用,以便正則運算式替換回傳替換的結果而不是修改輸入字串,這里是$_由于使用map運算子而導致的隱式變數。如果檔案參考了一個不存在的變數會發生什么?
die那么使用錯誤訊息可能是有意義的。/e我們可以將代碼包含在帶有標志的正則運算式替換的替換部分中:$contents =~ s{\$(\w )}{ $variables{$1} // die "Unknown variable: $1" }ge
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/450448.html
