了解奇怪的Perl多行注释机制

前端之家收集整理的这篇文章主要介绍了了解奇怪的Perl多行注释机制前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
编辑:注意新的Perl程序员:这个机制不应该用于多行注释!它具有缺陷降低的可读性.

在这个PerlMonks post on mechanisms to produce multiline comments in Perl年,阿比盖尔提供了这个,这让我很困惑:

The problem with just using a here document is that it will issue a warning under ‘-w’. It’s much better to use the little known << >> operator.

<<q=~q>>;
  This is a multiline comment.
q

运行通过-M0 = Deparse给出:

"  This is a multiline comment.\n" =~ //;
-e Syntax OK

有人可以告诉我发生了什么吗?

解决方法

阿比盖尔的答案部分幽默.实际上没有<< >>运算符(不是在Perl before 5.22的版本中),但是有一个(不是众所周知的,我猜)操作符.不是二进制移位运算符,而是一元 here-document (heredoc for short).一个简单的形式是:
$long_string = <<EOF;
This is a long,multiline string.
It ends when EOF appears alone on a line.
It will be assigned to the \$long_string variable.
EOF

实际上,这就是Abigail答案的“多行评论功能 – 多行字符串文字.其余的是有点混淆的Perl.

在<<<结束字符串文字.你可以使用q作为一个裸字:

<<q;
This is a multiline comment,or rather a string literal whose value is ignored.
q

要了解Abigail的其他代码片段,它有助于将这个文档重写成简单的字符串文字

"This is a multiline comment.\n" =~ q>>;

好的,现在q>>是q quote-like operator与>作为分隔符字符. Q>>相当于“'(一个非内插的文字,恰好是空的).所以字符串的字面值是matched against an empty pattern.匹配的结果也被忽略,但是这样会使匹配结果变量($1,$&等)失效.

猜你在找的Perl相关文章