perl /m 当作多行处理

高级用法 多行匹配:

zjtest7-frontend:/root/0825# cat a2.pl 
print "1111111111111\n";
my $_="abc\nABC\nabc";
print $_;
print "\n";



print "2222222222222\n";
my $_="abc\nABC\nabc";
s/c$/ZZZ/g;
print $_;
print "\n";

print "333333333333333\n";
my $_="abc\nABC\nabc";
s/c$/ZZZ/gm;
print $_;
print "\n";
zjtest7-frontend:/root/0825# perl a2.pl 
1111111111111
abc
ABC
abc
2222222222222
abc
ABC
abZZZ


333333333333333
abZZZ
ABC
abZZZ


實際上 /m 的作用就是讓 ^ 和 $ 匹配內嵌的換行符( \n ) 

/m当作多行处理

m   改变字符串^ $ 的匹配起始 终止位置,默认是按每行


/m 修饰符 允许^和$来立即匹配在一个嵌入的换行符前后,分别的,

 /^=head[1-7]/m 会匹配模式不只是记录的开始,而是任何适当的在一个新行后面

zjtest7-frontend:/root/0825# cat a4.pl 
my $_="aa
head4
bb";
if ($_=~/aa\nhead[1-7]\nbb/){print "1111111111\n"};
if ($_=~/aa\n^head[1-7]\nbb/){print "2222222222\n"};
if ($_=~/aa\n^head[1-7]\nbb/m){print "3333333333\n"};
zjtest7-frontend:/root/0825# perl a4.pl 
1111111111
3333333333


zjtest7-frontend:/root/0825# cat a4.pl 
my $_="aa
xxhead4
xbb";
if ($_=~/aa\nhead[1-7]\nbb/){print "1111111111\n"};
if ($_=~/aa\nhead[1-7]\nbb/){print "2222222222\n"};
if ($_=~/aa\n.*head[1-7]\n.bb/m){print "3333333333\n"};
zjtest7-frontend:/root/0825# perl a4.pl 
3333333333















posted @ 2016-08-25 16:26  czcb  阅读(275)  评论(0编辑  收藏  举报