作者cenda (在我们的城市)
看板Perl
标题[问题] 搜寻取代字串包含双引号
时间Fri Oct 5 15:48:33 2012
小弟是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
1F:→ cibs:试试 my $ps = qq/system\\("ps >& ps.log"\\);/; 10/05 17:14
2F:→ cibs:以 \ 在 qq// 里面让 \ 跳脱出来 10/05 17:15
3F:→ cibs:再以刚刚跳脱後的 \ 在 s/// 里面让 ( 和 ) 跳脱出来 10/05 17:15
4F:推 micangela:可以使用 $RegLine =~ s/\Q$ps\E/$markps/g 10/05 21:21
5F:推 micangela:\Q...\E 能把所有东西跳脱开来 10/05 21:24
6F:→ micangela:详情可搜寻quotemeta 10/05 21:24
7F:→ flu:不用\Q...\E的话 $ps中的() 就要作escape 10/05 21:41
8F:→ flu:刚刚发现从perl 5.14~5.16 quotemeta()的说明篇幅多了不少 10/05 22:07
9F:→ cenda:多谢指教~~ 我再去研究一下quotemeta ! 10/08 09:33