这份 RFC 提到:
与许多编程语言不同,Perl 目前没有实现真正的多行注释。这一点与通常使用的解决方法可能会有问题。可以通过添加新的语法来允许注释跨越多行,类似于下面提到的 here-documentation 变体来解决这个问题。
那么什么是常用的解决方法呢?
我在这里发现了两种技巧:
if (0) {
<comment>
}
并且
=pod
<comment>
=cut
这些是否安全使用?还有其他更好的替代品吗?
=begin format
... =end format
段落。我只需发明一个未被我使用的任何格式化程序处理的“comment”格式即可。
#!/usr/bin/perl
print "This line is executed\n";
=begin comment
print "This line isn't\n";
=end comment
=cut
print "This line is\n";
=begin
指令标识了特定格式化程序的部分。使用“comment”格式,该格式不应被任何格式化程序理解(按照策略)。使用=end
标记代码块结束。
# program is here
=begin comment
all of this stuff
here will be ignored
by everyone
=end comment
=cut
# program continues
Pod指令不能随意放置。您必须在解析器期望新语句的位置放置一个pod指令,而不仅仅是在表达式中间或其他任意语法产生式中。
有关更多详细信息,请参见perlpod。
虽然这不是标准写法,但我就是使用
=ignore
sub blah { ... }
my $commented_out_var = 3.14;
=cut
它同样有效,并提醒我它并不是POD。
一款带有“注释区域”功能的编辑器。
例如,Komodo Edit。我相信Eclipse和JEdit也有这个功能,但我手头没有它们来检查。
该功能通常会在所选区域的每一行开头插入一个“注释此行”的符号。它的好处是不会与现有的注释冲突(如果您在大多数语言中包含一个多行注释的区域,则存在风险)。
我最喜欢的多行注释工具是__END__
。
print "Hello world\n";
__END__
The script has ended. Perl does not treat this part of the file as code.
I can put whatever I want down here. Very handy.
__END__
在 perldoc perlmod 中有详细说明,你或许需要花更多时间在 perldoc 网站上熟悉它的文档(也可以阅读一本《学习 Perl》的书籍)。 - Ether这也可以:
q^
This is another way to
add multi-line comments
to your code
^ if 0;
这个之外
=begin comment
multi-paragraph comments here
=end comment
=cut
除了其他答案中的表单,您还可以这样做:
=for comment
this is a single pod paragraph comment do
not put extra blank lines after =for. the
comment ends after the first blank line and
regular pod continues until =cut
Hello! C<Yay!>
=cut
注释段落不会出现在Pod输出中,但是“Yay!”的问候语将会出现。
=comment
It was hard in the Moonta Mines that year
For the miners, down in the pit,
It wasn’t a place for a weak man, but
The Cornish Miners had grit,
They burrowed deeper with every day
Extracting the copper ore,
And the skimps grew high in the heaps that piled
Not far from the Moonta shore.
=cut
类似这样的东西也可以:
q{
my comment
};
我猜这是在运行Perl时评估的表达式。
在void上下文中使用无用的常量
。 - EverythingRightPlace
#
被认为是繁琐的呢?许多编辑器都可以使用宏(或等效物)轻松地完成这项工作... - Donal Fellows