对于字符串比较,Perl 有如下的一些有趣的字符串比较符:lt le eq ge gt ne。
(注意,在ASCII 中,大写字母在小写字母的前面)。
相等= = eq
不等!= ne
小于< Lt
大于> gt
小于或等于<= le
大于或等于>= ge
$text = “a line of text\n”;
chomp($text); #去掉换行符(\n)。
chomp ($text = <STDIN>); #从键盘读入,去掉换行符
正则表达式
查看某个给定文件中是否某行提到过flint,同时同一行后面提到stone
$grep‘flint.*stone’chapter*.txt
所有在双引号中的转义字符在模式中均有效,因此你可以使用/coke\tsprite/来匹配11 个字符的字符串coke, tab(制表符),sprite。
点(.)是通配符,它可以匹配任何单个的字符,但不包括换行符(“\n”),点(.)只匹配一个字符。
如果想匹配句号,可以使用反斜线。
星号(*)表示匹配前一项0次或者多次。
星号(*):“前面的东西,重复任意次数,包括0 次”。
如果希望包括不同的字符,(.*)将匹配任意字符任意多次。
加(+)可以匹配前面一项的一个或多个。
问号(?),其含义是前面一个项出现一次,或者不出现。
这三个数量词必须紧跟在某些项的后面,因为它是指前面项重复的次数。
模式/(fred)+/能匹配上像fredfredfred 这样的字符串,模式/(fred)*/,将匹配上像hello,world 这样的字符串,星号(*)意指匹配上0 次或者多次fred,当为0 时,那什么字符串都能被匹配上。
竖线(|),匹配左边的或者右边的。/fred|barney|betty/将匹配出现过fred,或者barney,或者betty 的字符串。
/fred( |\t)+barney/匹配fred,barney 以及中间由空格,制表符(tab),或者二者混合所组成的字符串。
/fred( +|\t+)barney/,分隔符必须全是空格或者全是制表符。
方括号[]中的一列字符,可以匹配上括号内出现的任意单个字符。
[\000-\177]可以匹配上任意的七比特的ASCII 字符。
字符类前使用符号^将取此字符类的补集。[^def]]将匹配上这三个字符中之外的任意单个字符。
[0-9],可以被简写为:\d。
\w :[A-Za-z0-9_]。
\w 不能匹配单词,而只能匹配单个字符。
为了匹配整个单词,需要后接加号。模式/fred \w+ barney/将匹配fred,空格,一个“单词(word)”,然后是空格和barney。
\s 对于匹配空白(whitespace),它等价于[\f\t\n\r ]。
\s 匹配此类中的单个字符,如果使用\s*将匹配任何个数的空白(包括没有),或者\s+匹配一个以上的空白。
这三种简写形式的补集:[^\d], [^\w], 和[^\s],或使用:\D, \W, \S 。
|