Regular Expressions as a Language Component
Perl语言引人注目的特性之一就是,正则表达式在语言之中支持完美地内建。Perl没有提供独立的正则表达式应用函数,它的正则表达式的运算符,包含在构成语言的其他丰富的运算符和结构之中。
Perl具有强大的运用正则表达式的能力,人们可能认为,这需要数量繁多的运算符,但是,Perl事实上只提供了四个与正则表达式有关的运算符,以及少量的相关元素(见表7-1)。
表7-1:Perl中与正则表达式相关的对象概览
Perl的功能非常强大,但它提供的运算符数量非常少,这样有利也有弊。
Perl的长处
Perl's Greatest Strength
Perl最大的优势可能在于,Perl的运算符和函数提供了丰富的选项。根据应用场合的不同,它们的行为也不同,当然,这通常是执行者在那种场合自然想到的操作。O’Reilly 的Programming Perl说得很绝对:“总的来说,Perl的运算符可以做你希望的任何事情……”。正则匹配运算符 m/regex/提供了许多神奇的功能,会根据应用的场合、方式以及修饰符的不同而变化。
Perl的短处
Perl's Greatest Weakness
表达能力太强,也是 Perl 最大的毛病之一。哪怕只是进行极小的修改,也有数不清的特殊情况、条件和场合在你眼皮底下发生变化,但却不会通知你——不经意之间就切换到另一种应用场合(注2)。在Programming Perl这本书中,上面那句话的下半句是“只是缺乏一致性(consistency)”。当然,对计算机科学来说,固定、一致而值得依赖的接口是可取的。Perl 的强大功能在有经验的用户手里可能是强大的武器,但情况似乎是,你的 Perl 技能不断增长,是以不断地射伤自己的腿脚为代价的。