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

Col*_*son 9 perl operators

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

在我正在研究的Perl程序中(namly plutil.pl),我=~在XML解析器部分看到了很多.例如,这里是函数UnfixXMLString(线159167上1.7($VERSION错误地声明为"1.5")):

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

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

    return $s;
}
Run Code Online (Sandbox Code Playgroud)

据我所知,它的C原型将是(类C)string UnfixXMLString(string s),它=~在参数(s)上使用运算符然后返回修改后的字符串,但是它在做什么?

dus*_*uff 20

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

if ($string =~ m/pattern/) {
Run Code Online (Sandbox Code Playgroud)

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

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

或者申请替换:

$string =~ s/foo/bar/;
Run Code Online (Sandbox Code Playgroud)

  • 更具体地说,它用于将`m //`,`s ///`或`y ///`(`tr ///`)运算符绑定到标量.最后一个没有涉及正则表达式.它也可以用作`$ var =〜$ re`,它与`$ var =〜/ $ re /`几乎相同. (4认同)

oct*_*bus 5

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

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