在Perl中,=〜意味着什么?

时间:2012-05-01 23:43:54

标签: perl operators

  

可能重复:
  What does =~ do in 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-like)string UnfixXMLString(string s),它在参数(=~)上使用s运算符,然后返回修改后的字符串,但它在做什么?

2 个答案:

答案 0 :(得分:20)

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

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

或者从字符串中提取组件:

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

或者申请替换:

$string =~ s/foo/bar/;

答案 1 :(得分:3)

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

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