12

可能重复:
=~ 在 Perl 中做什么?

在我正在检查的一个 Perl 程序(名称为plutil.pl=~ )中,我在 XML 解析器部分看到了很多内容。例如,这里是函数UnfixXMLString1591671.7 的行($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) 上使用运算符,然后返回修改后的字符串,但它在做什么?

4

2 回答 2

22

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

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

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

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

或应用替换:

$string =~ s/foo/bar/;
于 2012-05-01T23:47:10.590 回答
3

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

$sentence = "The river flows slowly.";
if ($sentence =~ /river/)
{
    print "Matched river.\n";
}
else
{
    print "Did not match river.\n";
}
于 2012-05-01T23:57:48.490 回答