Perl中多行注释的常见解决方法是什么?

时间:2010-08-31 12:23:48

标签: perl comments

This RFC 提及

  

与许多编程语言不同,Perl目前没有实现真正的多行注释。这个以及常用的解决方法可能会有问题。这可以通过添加新语法来解决,以允许注释跨越多行,例如下面引用的文档中的变体。

常见的解决方法是什么?

我找到的两种技术here

if (0) {
  <comment>
}

=pod
<comment>
=cut

这些可以安全使用吗?还有其他更好的工作吗?

12 个答案:

答案 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。

  • 旁白:有趣的是,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。