This RFC 提及
与许多编程语言不同,Perl目前没有实现真正的多行注释。这个以及常用的解决方法可能会有问题。这可以通过添加新语法来解决,以允许注释跨越多行,例如下面引用的文档中的变体。
常见的解决方法是什么?
我找到的两种技术here是
if (0) {
<comment>
}
和
=pod
<comment>
=cut
这些可以安全使用吗?还有其他更好的工作吗?
答案 0 :(得分:34)
“if”解决方案的缺点是注释掉的代码仍然需要编译(因此仍需要进行语法检查)。
您的pod解决方案的缺点是您的评论将出现在从pod生成的任何文档中。
我使用了没有该问题的pod解决方案版本。 Pod支持=开始格式... =由特定格式化程序处理的结束格式段落。我只是发明了一种“评论”格式,这种格式不是由我使用的任何格式化程序处理的。
=begin comment
This is ignored by everything
=end comment
<强>更新强>
我错过了我的例子中的一个重要部分。您需要使用= cut结束pod部分。这是一个完整的例子。
#!/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";
答案 1 :(得分:15)
Perl文档告诉您如何在perlfaq7中执行此操作。这是非常安全的,因为我们可以使用Pod,我们不需要额外的语法来实现它:
如何注释掉一大块perl代码?
您可以使用嵌入式POD丢弃它。包含您想要的块
在POD标记中注释掉。 =begin
指令标记了一个部分
特定的格式化程序。使用“评论”格式,没有格式化程序
应该声称理解(通过政策)。标记块的结尾
=end
。
# program is here
=begin comment
all of this stuff
here will be ignored
by everyone
=end comment
=cut
# program continues
pod指令不能只在任何地方。你必须放一个吊舱 解析器期望新语句的指令,而不仅仅是 表达式的中间或其他任意语法生成。
有关详细信息,请参阅perlpod。
答案 2 :(得分:10)
虽然它不标准,但我只是使用
=ignore
sub blah { ... }
my $commented_out_var = 3.14;
=cut
它同样有效,并提醒我它不是POD。
答案 3 :(得分:7)
具有“评论区域”功能的编辑器。
例如,Komodo Edit。我很确定Eclipse和JEdit也这样做,但我没有方便检查。
该功能通常在所选区域的每一行的开头插入“注释此行”符号。它具有不与现有注释冲突的好处(如果在大多数语言中包装包含多行注释的区域,则存在风险)
答案 4 :(得分:5)
这也有效:
q^
This is another way to
add multi-line comments
to your code
^ if 0;
答案 5 :(得分:4)
我最喜欢的多行评论设备是__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.
答案 6 :(得分:3)
除了
=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输出中,但是Hello“Yay!”将
答案 7 :(得分:1)
一个特殊用例是注释掉几行代码。但是如果您使用版本控制系统,则可以删除不需要的代码而不是将其注释掉,如果您需要它,只需获取旧版本。
答案 8 :(得分:1)
也有类似的东西:
q{
my comment
};
这是我在运行Perl时估计的表达式。
答案 9 :(得分:0)
我用那种方式为我工作
=head
"your code to comment
monkey
banana"
=cut
答案 10 :(得分:0)
又一种有用的方式!
=begin GHOSTCODE
whatever you want to uncomment
=end GHOSTCODE
=cut
答案 11 :(得分:0)
这不是一种Perl语法方法,但在大多数编辑器(如Notepad ++)中,您可以突出显示要注释掉的代码,然后按CTRL + K.要删除注释,您可以突出显示它们,然后按CTRL + Shift + K。