perl – Devel :: Declare从脚本中删除行
发布时间:2020-12-15 21:45:13 所属栏目:大数据 来源:网络整理
导读:我正在尝试学习 Devel::Declare ,以便尝试在没有源过滤器的情况下重新实现像PDL :: NiceSlice这样的东西.当我注意到它正在从我的脚本中删除下一行时,我正在某个地方.为了说明我已经做了这个最小的例子,其中一个人可以使用comment关键字从代码中删除整行,允许
|
我正在尝试学习
Devel::Declare,以便尝试在没有源过滤器的情况下重新实现像PDL :: NiceSlice这样的东西.当我注意到它正在从我的脚本中删除下一行时,我正在某个地方.为了说明我已经做了这个最小的例子,其中一个人可以使用comment关键字从代码中删除整行,允许编译,即使该行上有大量的单词.
#Comment.pm
package Comment;
use strict;
use warnings;
use Devel::Declare ();
sub import {
my $class = shift;
my $caller = caller;
Devel::Declare->setup_for(
$caller,{ comment => { const => &;parser } }
);
no strict 'refs';
*{$caller.'::comment'} = sub {};
}
sub parser {
#my $linestr = Devel::Declare::get_linestr;
#print $linestr;
Devel::Declare::set_linestr("");
}
1
和 #!/usr/bin/env perl #test.pl use strict; use warnings; use Comment; comment stuff; print "Print 1n"; print "Print 2n"; 只收益率 Print 2 我错过了什么? 附:如果我想把这个问题拿出来的话,我可能还会有更多关于D :: D的问题,所以提前谢谢! 解决方法
好的,我明白了.使用perl -MO = Deparse test.pl你会得到:
use Comment;
use warnings;
use strict 'refs';
comment("Print 1n");
print "Print 2n";
test.pl syntax OK
这告诉我,如果强制调用注释函数.经过一些实验,我发现我可以将输出设置为显式调用comment(),这样它就不会尝试对下一步调用注释. sub parser {
Devel::Declare::set_linestr("comment();");
}
所以deparse是: use Comment; use warnings; use strict 'refs'; comment(); print "Print 1n"; print "Print 2n"; test.pl syntax OK 和适当的输出. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
