我有简短的脚本 test.pl
#!/usr/bin/perl
use locale;
use encoding 'utf-8';
use Getopt::Std;
getopts("dei") or print STDERR "TRALALALALA\n";
print"@ARGV\n";
我需要抑制Unknown option:
getopts 生成的消息,并且只在 stderr 上获取我的 TRALALALALA。
{
local $SIG{__WARN__} = sub { }; # Supress warnings
getopts("dei")
or print STDERR "TRALALALALA\n";
}
或者您甚至可以在警告处理程序中嵌入“TRALALALALA”:
{
local $SIG{__WARN__} = sub { print STDERR "TRALALALALA\n" };
getopts("dei");
}
您还可以将其本地化*::STDERR
并打开到块中的缓冲区,如下所示:
@ARGV = qw(-i -a -g);
{ open( local *STDERR, '>', \(my $stderr))
or warn( 'Could not open to string!' )
;
getopts( 'ig' );
say '$stderr=' . $stderr;
}
print STDERR 'STDERR => out';