2012-05-01 101 views
8

可能重复:
What does =~ do in Perl?是什么=〜意味着在Perl

在Perl程序我检查(namly plutil.pl),我看到了很多的=~上的XML解析器一部分。例如,这里是功能UnfixXMLString(在1.7线159167$VERSION错误地宣布为“1.5”))

sub UnfixXMLString { 
    my ($s) = @_; 

    $s =~ s/&lt;/</g; 
    $s =~ s/&gt;/>/g; 
    $s =~ s/&amp;/&/g; 

    return $s; 
} 

从我可以告诉,其C原型将是(C类)string UnfixXMLString(string s) ,并在参数(s)上使用=~运算符,然后返回修改过的字符串,但它在干什么?

回答

17

=~是Perl binding operator。它通常用于将正则表达式应用于字符串;例如,测试一个字符串模式匹配:

if ($string =~ m/pattern/) { 

,或者从一个字符串中提取部分组成:

my ($first, $rest) = $string =~ m{^(\w+):(.*)$}; 

或申请替代:

$string =~ s/foo/bar/; 
+4

更具体地说,它用于将'm //','///'或'y ///'('tr ///')运算符绑定到标量。正则表达式不参与最后一个。它也可以用作'$ var =〜$ re',这与'$ var =〜/ $ re /'几乎相同。 – tchrist

3

=〜是Perl绑定运算符,并可用于确定是否发生正则表达式匹配(true或false)

$sentence="The river flows slowly."; 
if($sentence =~ /river/) 
{ 
    print "Matched river.\n"; 
} 
else 
{ 
    print"Did not match river.\n"; 
}