【问题标题】:What does =~ mean in Perl? [duplicate]=~ 在 Perl 中是什么意思? [复制]
【发布时间】:2019-01-25 02:29:43
【问题描述】:

可能重复:
What does =~ do in Perl?

在我正在检查的一个 Perl 程序中(也就是 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)上使用=~ 运算符,然后返回修改后的字符串,但它是什么在做什么?

【问题讨论】:

    标签: perl operators


    【解决方案1】:

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

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

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

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

    或应用替换:

    $string =~ s/foo/bar/;
    

    【讨论】:

    • 更具体地说,它用于将m//s///y/// (tr///) 运算符绑定到标量。最后一个不涉及正则表达式。也可以用作$var =~ $re,和$var =~ /$re/差不多。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-03-05
      • 1970-01-01
      • 2010-12-28
      • 2023-03-25
      • 2020-10-27
      • 2015-07-15
      • 2018-07-17
      • 2012-08-13
      • 1970-01-01
      相关资源
      最近更新 更多