可能重复:
What does =~ do in Perl?
在我正在检查的Perl程序中(namly plutil.pl),我在XML解析器部分看到了很多=~
。例如,以下是函数UnfixXMLString
(1.7行159
到167
($VERSION
错误地声明为“1.5”)):
sub UnfixXMLString {
my ($s) = @_;
$s =~ s/</</g;
$s =~ s/>/>/g;
$s =~ s/&/&/g;
return $s;
}
据我所知,它的C原型将是(C-like)string UnfixXMLString(string s)
,它在参数(=~
)上使用s
运算符,然后返回修改后的字符串,但它在做什么?
答案 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";
}