基本上我的意思是:在命令行调用perl脚本时,有没有办法让我禁用函数print的输出?如果在perl的基本实现中不可用那么可能是CPAN吗?
我所知道的事情:
我不是指任何警告,例外,错误等......只是标准打印功能或其中任何一个非常亲密的兄弟姐妹。
类似于你如何使用C的#ifdef,但是在文件范围内,并且不必为这么少的东西写这么多。
我愿意安装cpan模块,以防它提供这种功能。
我仅限于Perl 5.14。
答案 0 :(得分:0)
假设您自己编写此脚本,或者可以对其进行编辑,则可以使用以下内容。
use Getopt::Long;
our $VERBOSE = 0;
GetOptions ('verbose+' => \$VERBOSE);
# ...
xprint(1, "Yadda yadda yadda");
# ...
sub xprint {
my ($pri, $msg) = @_;
print("$msg\n") if $pri >= $VERBOSE;
}
编辑:
或没有优先级:
use Getopt::Long;
our $VERBOSE = '';
GetOptions ('verbose' => \$VERBOSE);
# ...
xprint("Yadda yadda yadda");
# ...
sub xprint {
# can also be replaced with printf(@_) for more cowbell.
print("$_[0]\n") if $VERBOSE;
}
编辑:
另外,对于#ifdef
功能,用一个简单的常量替换整个getopt部分:
use constant VERBOSE => 1;
在print语句后删除VERBOSE中的$
:
print("$_[0]\n") if VERBOSE;