Re: 想請教一下 perl 中的字串取代

看板Programming作者 (Kornelius)時間18年前 (2007/09/22 00:07), 編輯推噓7(704)
留言11則, 2人參與, 最新討論串7/12 (看更多)
eval 少用,建議使用 qr{ pattern } 譬如 $pattern = qr/^a\/(.*)/; 比對時,可直接使用,如: $str =~ s/$pattern/$1/g; 透過 qr 操作子可把 pattern 存起來,在呼叫的時候就不會有樣式編譯的問題 ( 請參閱 Programming Perl 樣式比對章節 ) 或參閱 Perldoc http://perldoc.perl.org/perlretut.html http://perldoc.perl.org/perlop.html#Regexp-Quote-Like-Operators http://perldoc.perl.org/perlop.html#qr%2fSTRING%2fimosx ※ 引述《dreamer.bbs@snow.ice.ntnu.edu.tw ( )》之銘言: : 小弟剛接觸 perl,有點問題想麻煩各位先進幫忙解答一下: : 我知道在 perl 中可以用 s/pattern/replacement/ 來取代字串, : 若原始字串是 "a/bcde/f", 若在程式碼中以 s/^a\/(.*)/c\1d/ 進行取代 : 結果會變成 "cbcde/fd" : 但是若我想把 pattern 跟 replacement 放在變數裡, : 比方說 : $pat = "^a\/(.*)"; : $rep = "c\1d"; : 然後以 s/$pat/$rep/ 來進行取代的操作, : 結果會得到 "c\1d" : 因為我需要由檔案中將 pattern 與 replacement 的規則讀進來, : 該如何做才能得到與第一種寫法一樣的結果呢? : 希望各位先進能撥空稍微指點一下,感恩! =) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.223.100.79

09/22 00:09, , 1F
他是要後面的字串動態...看清楚
09/22 00:09, 1F

09/22 00:29, , 2F
抱歉沒看清楚. :)
09/22 00:29, 2F

09/22 00:29, , 3F
那就使用 s/$p/$e/eeg 吧
09/22 00:29, 3F

09/22 00:30, , 4F
不過用eval的確要小心..尤其input從web
09/22 00:30, 4F

09/22 00:31, , 5F
eg的方式還是不行的 你自己跑一次吧
09/22 00:31, 5F

09/22 00:31, , 6F
是 eeg , 我跑過了 :)
09/22 00:31, 6F

09/22 00:35, , 7F
能否貼一份code 來看看
09/22 00:35, 7F

09/22 00:36, , 8F
我總覺得有地方不對勁
09/22 00:36, 8F

09/22 00:39, , 9F
double eval 用法應該不能達到這個效果
09/22 00:39, 9F

09/22 01:08, , 10F
的確,不過如果只是單純要取代為 $1 就可
09/22 01:08, 10F

09/22 01:13, , 11F
嗯嗯^^"
09/22 01:13, 11F
文章代碼(AID): #16y-n3WP (Programming)
討論串 (同標題文章)
文章代碼(AID): #16y-n3WP (Programming)