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

Perl中多行注释的常见解决方法是什么?,perl,comments,Perl,Comments,提到 与许多编程语言不同,Perl目前没有实现真正的多行注释。这一点以及常用的变通方法可能会有问题。这可以通过添加新语法来解决,允许注释跨越多行,如下面引用的此处文档的变体 常见的解决办法是什么 我发现的两种技术是 if(0){ } 及 =pod =切割 这些东西使用安全吗?还有其他更好的吗?具有“评论区域”功能的编辑器 例如,Komodo编辑。我很确定Eclipse和Jedid做得不好,但我手头没有他们来检查 该功能通常会在选定区域中每行的开头插入一个“注释此行”符号。它的好处是不与现有注

提到

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

常见的解决办法是什么

我发现的两种技术是

if(0){
}

=pod
=切割
这些东西使用安全吗?还有其他更好的吗?

具有“评论区域”功能的编辑器

例如,Komodo编辑。我很确定Eclipse和Jedid做得不好,但我手头没有他们来检查

该功能通常会在选定区域中每行的开头插入一个“注释此行”符号。它的好处是不与现有注释冲突(如果在大多数语言中包装一个包含多行注释的区域,这是一个风险)

如果“if”解决方案的缺点是仍然需要编译注释掉的代码(因此仍然需要检查语法)

pod解决方案的缺点是,您的评论将出现在pod生成的任何文档中

我使用的pod解决方案版本没有这个问题。Pod支持=开始格式=结束由特定格式化程序处理的段落格式。我只是发明了一种“注释”格式,我使用的任何格式化程序都不会处理这种格式

=begin comment

This is ignored by everything

=end comment
更新:

我错过了我的例子的一个重要部分。您需要以=剪切结束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";

我最喜欢的多行注释设备是
\uuuu END\uu

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.

虽然它不是标准的,但我只是使用

=ignore 

sub blah { ... }
my $commented_out_var = 3.14;

=cut
它也能正常工作,提醒我它不是POD

  • 旁白:POD为我们提供了一个灵活的框架,用于包含不应视为代码的各个区域,并指定该区域的含义,这是一件有趣的事情。很明显,我们“把事情注释掉”,因为注释是这样工作的。然而,从这个术语中可以清楚地看出,评论是文字,而不是指示;文件不是更改
      一个特殊的用例是注释掉几行代码。但是如果您使用版本控制系统,您可以删除不需要的代码,而不是注释掉它,如果您需要它,只需获取旧版本。

      Perl文档告诉您如何在中执行。它非常安全,而且由于我们可以使用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指令不能去任何地方。你必须放一个豆荚 指令,其中解析器需要一个新语句,而不仅仅是 表达式或其他任意语法产物的中间部分

      有关更多详细信息,请参见。

      =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段落注释
      不在=之后添加额外的空行。这个
      注释在第一个空行和之后结束
      常规pod持续到=切割
      你好C
      =切割
      
      评论段落不会出现在pod输出中,但Hello“Yey!”会出现。

      这也适用于:

      q^
         This is another way to 
         add multi-line comments
         to your code
      ^ if 0;
      
      q{
      my comment
      };
      

      我用那种方式为我工作

      =head
      
      "your code to comment
      monkey
      banana"
      
      =cut
      

      类似的东西也能起作用:

      q^
         This is another way to 
         add multi-line comments
         to your code
      ^ if 0;
      
      q{
      my comment
      };
      

      我想这是一个在运行Perl时计算的表达式。

      另一种有用的方法



      这不是一种Perl语法方法,但在大多数编辑器(如Notepad++)中,您可以突出显示要注释掉的代码,然后按CTRL+K。要删除注释,您可以突出显示它们,然后按CTRL+Shift+K。

      例如?我使用
      vim
      ,其中.vim与perl支持插件一起使用=pod/=cut方法。或者简单地说。@Lazer:在vim中一次编辑许多行非常容易,在gvim中更容易。只需进入可视化的HelyTin模式,选择一个范围,插入文本,和.@ FM:Perl中如何使用它?@ Laser:<代码>.为什么在每一行的开头都加上一个
      #
      ?许多编辑器可以很容易地用宏(或等效的宏)实现这一点……不要在Perl6RFC中放太多的存货。拉里拒绝了他们中的大多数。在答案中保留第一个(不满意的)版本真的有必要吗?我不认为这会给解决方案增加什么。你能编辑你的答案并删除它吗?这样人们就能马上看到正确的解决方案了?谢谢我喜欢这种简单的方法,但我得到了以下警告:
      在无效上下文中无用地使用常量
      。您害怕警告吗?选择所需的行,然后按
      CTRL+Q
      。这将打开和关闭注释。
      =begin GHOSTCODE
      
      whatever you want to uncomment
      
      =end GHOSTCODE
      
      =cut