<<'m'=〜m >>语法在perl中是什么意思?

前端之家收集整理的这篇文章主要介绍了<<'m'=〜m >>语法在perl中是什么意思?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我明白perl有很多不同寻常的语法,但我遇到了一个代码片段在工作,其他那天,让我困惑。有人可以向我解释它的意思:
<<'m'=~m>>
print $a unless $b;
return;
m
;

它看起来像HEREDOC语法,但没有任何形式,我见过。

解决方法

此秘密语法称为 ornate double-bladed sword,通常表示为:
<<m=~m>>

Comments here

m
;

这是一个多行注释的hack,利用heredoc语法和匹配运算符(=〜)与>作为分隔符。

注意,如斜线,/,未用作匹配的分隔符,则需要“m”运算符。例如$ my_var =〜/ test /等效于$ my_var =〜m> test>,而$ my_var =〜> test>将无效。

注意事实,你的代码片段中的第一个m字符由单引号括起来,意味着$ a和$ b变量不会被插值。如果这些引用被省略(根据我提供的代码示例)perl将自动添加双引号到结束标记,任何后续的变量将被插值。这将导致问题,如果$ a和$ b不再定义,你使用使用警告。

为了使上面的华丽双刀片示例更容易理解(但仍然不推荐),我们可以写:

<<"END" =~ //

Comments here

END
;

注意= = //是多余的,所以这相当于:

<<"END";

Comments here

END

这只是在void上下文中的标准heredoc语法。

我不建议在生产代码中使用这个,因为在void上下文中有一个字符串可能会导致问题。此外,这个代码是一个头部scratcher甚至最有经验的perl程序员,是无意义的阅读和维护难度!如果你想创建正确的多行注释,那么我建议坚持pod,如这里解释How do I enter a multi-line comment in Perl?

希望这清除它。

原文链接:https://www.f2er.com/Perl/173562.html

猜你在找的Perl相关文章