我如何只注释掉Perl中的部分行?

Her*_*son 15 perl comments

如何在Perl中注释单行的一部分,如下所示:

 if($clevel==0){#never happends}
Run Code Online (Sandbox Code Playgroud)

我希望能够评论最后一个结束括号,而不需要换行.

lex*_*exu 11

#号开始,随着该行的末尾结束的注释.

  • @Herrmann Ingjaldsson:没有这方面的规定......但请看这里的Perl6想法:http://dev.perl.org/perl6/rfc/102.html (3认同)
  • 是的,我知道,但我想在该行结束之前结束评论。 (2认同)

mob*_*mob 10

如果真的那么重要,请使用源过滤.

# C_Style_Comments.pm
package C_Style_Comments;
use Filter::Simple;
FILTER {   s{/\* .* \*/}{}gmx    };
1;
Run Code Online (Sandbox Code Playgroud)
$ perl -MC_Style_Comments -e 'print /* 5, No wait, I mean */ 3'
3
Run Code Online (Sandbox Code Playgroud)

  • 源过滤器是邪恶的.突然间你无法相信眼前的代码,因为程序中其他地方的一些隐形魔法可能正在改变它.它可能在开发中很有用,但在生产代码中远离它.恕我直言. (10认同)
  • @Ether - 我为你上传了'Acme :: SafetyGoggles`给CPAN ;-) (3认同)
  • 像许多邪恶的东西一样,源过滤器有时间和地点(这个问题不一定是那个时代之一).始终佩戴护目镜. (2认同)

Joe*_*Joe 7

你不能写的任何理由:

if($clevel==0){#never happends}
Run Code Online (Sandbox Code Playgroud)

如:

if($clevel==0){} #never happens
Run Code Online (Sandbox Code Playgroud)

您可以使用一些技巧来隐藏消息,例如:

0 and 'some comment'
Run Code Online (Sandbox Code Playgroud)

但是,如果其他人不得不在将来维护您的代码,那么您只会让它变得更加混乱.

在语言的约束下工作,而不是试图强迫它像某种语言一样,你更熟悉,往往会让你学习新的东西.我个人讨厌在IDL工作,但是一些处理不良循环性能的技巧使我优化了自从用其他语言编写的代码.

  • 为了完整地维护代码,您不仅应该评论“不可能的条件”,还应该警告或死亡或打印一些有趣的消息(因为这样会绕开),以便您*知道*代码何时击中了那些“不可能的条件” ”行。 (2认同)

Axe*_*man 5

A #然后换行.你可以将它们视为各种各样的支架,因为在Perl中很少会因为在不同的行上而失去意义.

my $ans = 2 + rand( 5 ) + $pixels / FUDGE_FACTOR;
Run Code Online (Sandbox Code Playgroud)

my $ans = # 2 + 
    rand( 5 ) + $pixels # / FUDGE_FACTOR
    ;
Run Code Online (Sandbox Code Playgroud)

或者来自:

if ( dont_know_how_this_breaks() && defined $attribute ) { 
   #...
}
Run Code Online (Sandbox Code Playgroud)

至:

if ( # dont_know_how_this_breaks() && 
     defined $attribute ) { 
   #...
}
Run Code Online (Sandbox Code Playgroud)

  • @Hermann Ingjaldsson:只是评论说没有发生的事情没有像做*断言那样有用*从未发生过.我已经让代码命中了永不发生的行,并且报告它达到了你从未想过的条件是有用的. (2认同)