习惯使用perl4的开发者总是用^表示字符串开头锚位,用$表示字符串结尾锚位,比如\^https://\ 将会匹配所有以https://开头的字符串,同样,\.bmp$\将会匹配所有以.bmp结尾的字符串。但是到了perl5,有了\A ,\Z , \z三种锚位,这三种锚位中,\A与^相同,表示匹配以某模式开头的字符串,而\z就与$相同了……

但是如果有了/m,则^表示行首而不再是字符串的串首!以字符串"this is a wilma line \nbarney is on another line \n but this ends in fred\n and a final dino line"为例,串首只有一个,就是this ,而行首却有四个,分别是this,barney,but和and,因此,模式/^barney/不能匹配该字符串,因为barney不是串首元素;但是,/^barney/m可以匹配该字符串,因为加了/m以后,^就表示匹配行首了,条件更宽松了……同样的,/fred$/不能匹配该字符串,因为fred不在串尾位置。但是/fred$/m却可以匹配该字符串,因为加了/m就表示匹配行尾而不是串尾了,故可以匹配了……

05-25 23:26