在Perl中做什么=〜

时间:2012-04-04 20:51:21

标签: perl operators

我猜这个标签是一个变量,它正在检查9eaf - 但它是否存在于Perl中?

这里做的“=〜”符号是什么?9eaf之前和之后的“/”字符是什么?

if ($tag =~ /9eaf/)
{
    # Do something
}

4 个答案:

答案 0 :(得分:30)

=~是测试正则表达式匹配的运算符。表达式/9eaf/是正则表达式(斜杠//是分隔符,9eaf是实际的正则表达式)。换句话说,测试是说“如果变量$ tag与正则表达式/ 9eaf / ...匹配”,如果$tag中存储的字符串连续包含那些字符9eaf,则会发生此匹配,在任何时候。所以对于字符串

来说也是如此
9eaf

xyz9eaf

9eafxyz

xyz9eafxyz

和许多其他人,但不是字符串

9eaxxx
9xexaxfx

和其他许多人。查看'perlre' man page以获取有关正则表达式的更多信息,或查看谷歌“perl正则表达式”。

答案 1 :(得分:8)

'=〜'运算符是binary binding operator,表示以下操作将搜索或修改左侧的标量。

默认(未指定)运算符为'm'表示匹配。

匹配运算符有一对字符,用于指定正则表达式的开始和结束位置。最常见的是,这是'//'。

Perl Re tutorial读一读。

答案 2 :(得分:6)

代码正在测试9eaf是否为$tag值的子字符串。


$tag =~ /9eaf/

的缩写
$tag =~ m/9eaf/

其中m//是匹配运算符。它将正则表达式模式(regexp)9eaf=~绑定的值匹配(由=~的左侧返回)。


运营商(包括m//=~)记录在perlop中。

正则表达式(例如9eaf)记录在perlreperlretut中。

答案 3 :(得分:3)

检查标量$tag(可能是一个字符串)与正则表达式/9eaf/的匹配,它只是检查字符串"9eaf"是否是子字符串$tag。查看perldoc perlretut