最近,我对正则表达式变得友好,并使用它们非常有效地完成了许多任务。与大多数 perl 一样,TIMTOWTDI 模糊了我的判断。有时我可以使用相等运算符或绑定运算符。但是,是否有时更适合使用其中一个?
首先是简化案例
my $name = 'Chris';
if ($name eq 'Chris') { print 'What a great name!'; }
if ($name =~/^Chris$/) { print 'Yip sure is a great name; }
所以在这种情况下,这是最简化的,使用等式减少了打字,但是在这个简化的例子中,其中一个或另一个有什么好处。
在一个稍微复杂的例子中
my $name = 'Christopher';
if ($name eq 'Chris' || $name eq 'Christopher') { print 'What a great name!'; }
if ($name =~ /^Chris(?:topher)?$/) { print 'Yip sure is a great name; }
这里的绑定操作符少打字。但是,我不确定其中一个好处是否会超过另一个。
如果您将整个字符串与固定值匹配以使用相等运算符,并且如果您将字符串与模式匹配,例如任何 5 位字符串,则一般规则也是如此,/\d{5}/
则使用绑定运算符。
在上面的示例中使用绑定运算符是否不合适。我很欣赏这些例子只是虚构的,可能无法反映现实生活中的问题。然而,他们是我想试图解释我的问题的人。