This RFC提到Perl中多行注释的常见解决方法是什么?
不像很多编程语言Perl并不目前实现真正的多行注释。这和常用的解决方法可能会有问题。这可以通过添加新的语法来解决,以允许评论跨越多行,如下面引用的文档中的变体。
什么是常见解决方法?
两种技术,我发现here是
if (0) {
<comment>
}
和
=pod
<comment>
=cut
难道这些安全使用?还有其他人能更好地工作吗?
This RFC提到Perl中多行注释的常见解决方法是什么?
不像很多编程语言Perl并不目前实现真正的多行注释。这和常用的解决方法可能会有问题。这可以通过添加新的语法来解决,以允许评论跨越多行,如下面引用的文档中的变体。
什么是常见解决方法?
两种技术,我发现here是
if (0) {
<comment>
}
和
=pod
<comment>
=cut
难道这些安全使用?还有其他人能更好地工作吗?
“if”解决方案的缺点是注释掉的代码仍然存在进行编译(因此仍然需要进行语法检查)。
您的pod解决方案的缺点是您的评论将出现在由该pod生成的任何文档中。
我使用了没有该问题的pod解决方案版本。 Pod支持=开始格式... =由特定格式化程序处理的结束格式段落。我只是发明了一种“评论”格式,而不是我使用的任何格式化程序处理的格式。
=begin comment
This is ignored by everything
=end comment
更新:
我错过了我的例子中的重要组成部分。您需要使用= cut结束吊舱部分。这是一个完整的例子。
#!/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";
如果只有这样才能在没有= cut的情况下工作。 – 2010-08-31 15:30:31
真的有必要在答案中保留第一个(不满意的)版本吗?我不认为它增加了任何解决方案。你可以编辑你的答案并将其删除,以便人们立即看到正确的解决方案吗?谢谢! – 2014-08-21 12:23:23
具有“注释区域”功能的编辑器。
例如,科莫多编辑。我很确定Eclipse和JEdit也是这样做的,但我没有它们方便检查。
该功能通常会在选定区域的每一行的开头插入“注释此行”符号。它具有与现有评论不冲突的好处(如果您在大多数语言中包含包含多行注释的区域,这是一种风险)
?我使用[只支持C/C++/Java评论](http://vim.wikia.com/wiki/Comment/UnComment_visually_selected_text)的'vim'。 – Lazer 2010-08-31 12:27:16
使用perl-support插件的Vim使用= pod/= cut方法。 http://www.vim.org/scripts/script.php?script_id=556 – 2010-08-31 12:32:54
https://github.com/petdance/vim-perl或者干脆[升级到Vim 7.3](http:// perlbuzz。 COM/2010/08/VIM-73 - 载体-perl的-6.html)。 – daxim 2010-08-31 12:43:00
我最喜欢的多行注释设备是__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.
虽然这是不规范的,我只是用
=ignore
sub blah { ... }
my $commented_out_var = 3.14;
=cut
它的工作原理一样好,并提醒我,这是不是POD。
一个特殊的用例是注释掉几行代码。但是,如果您使用版本控制系统,则只需删除不需要的代码而不是将其注释掉,如果您曾经需要它,只需获取旧版本。
Perl文档告诉你如何在perlfaq7中做到这一点。这是大量的安全,因为我们可以用波德做到这一点,我们并不需要额外的语法来做到这一点:
我怎样才能注释掉的Perl代码块大?
您可以使用嵌入式POD将其丢弃。将您想要的块封装在POD标记中。 指令为特定格式化程序标记了 部分。使用“注释”格式,其中格式化程序 应声明理解(按策略)。用 =end
标记块的结尾。
# program is here
=begin comment
all of this stuff
here will be ignored
by everyone
=end comment
=cut
# program continues
pod指令不能去任何地方。您必须在解析器期望新语句的位置放置一个pod 指令,而不仅仅是在表达式或其他任意语法生成的中间位置处的 。
请参阅perlpod了解更多详情。
除了在其他的答案中
=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输出,但你好“耶! “将。
这工作太:
q^
This is another way to
add multi-line comments
to your code
^ if 0;
我用这种方式和我的作品
=head
"your code to comment
monkey
banana"
=cut
喜欢的东西的作品太:
q{
my comment
};
这是我猜评估,同时表达运行Perl。
我喜欢这种简单的方法,但我得到以下警告:'在无效的上下文中无用的常量'。 – EverythingRightPlace 2015-04-09 11:11:00
你是否害怕警告? – Aftershock 2015-04-10 20:23:57
还有另一种有用的方法!
=begin GHOSTCODE
whatever you want to uncomment
=end GHOSTCODE
=cut
这不是做一个Perl语法的方式,但在大多数编辑器(如记事本++),您可以突出显示要被注释掉,然后按CTRL + K码。要删除注释,可以突出显示它们,然后按CTRL + Shift + K。
选择所需的行,然后按下CTRL + Q。这将切换注释_on_和_off_。 – serenesat 2015-05-28 11:08:48
为什么在每一行的开头放一个'#'首先考虑繁重?很多编辑可以很容易地用宏(或等价的)来做到这一点...... – 2010-08-31 14:34:25
不要在Perl 6 RFC中放太多库存。拉里拒绝了他们中的大部分。例如 – 2010-08-31 18:16:57