看板 Perl 關於我們 聯絡資訊
小弟是Perl的初學者 都是靠GOOGLE大神教我的 這邊我遇到一個問題 就是我在搜尋字串並且取代的時候 因為要搜尋的字串包含雙引號 " 所以一直無法正確搜尋並且取代 請高手賜教 感謝 my $ps = qq/system("ps >& ps.log");/; my $markps = qq/#system("ps >& ps.log");/; open (PS, "<A.pl"); my @PS =<PS>; close (PS); for my $RegLine(@PS) { if ($RegLine =~ s/$ps/$markps/g) { open (PS, ">A.pl"); print PS @PS; close (PS); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.235.207.136
cibs:試試 my $ps = qq/system\\("ps >& ps.log"\\);/; 10/05 17:14
cibs:以 \ 在 qq// 裡面讓 \ 跳脫出來 10/05 17:15
cibs:再以剛剛跳脫後的 \ 在 s/// 裡面讓 ( 和 ) 跳脫出來 10/05 17:15
micangela:可以使用 $RegLine =~ s/\Q$ps\E/$markps/g 10/05 21:21
micangela:\Q...\E 能把所有東西跳脫開來 10/05 21:24
micangela:詳情可搜尋quotemeta 10/05 21:24
flu:不用\Q...\E的話 $ps中的() 就要作escape 10/05 21:41
flu:剛剛發現從perl 5.14~5.16 quotemeta()的說明篇幅多了不少 10/05 22:07
cenda:多謝指教~~ 我再去研究一下quotemeta ! 10/08 09:33