私は短いスクリプトtest.plを持っています
#!/usr/bin/perl
use locale;
use encoding 'utf-8';
use Getopt::Std;
getopts("dei") or print STDERR "TRALALALALA\n";
print"@ARGV\n";
getopts によって生成されたメッセージを抑制Unknown option:
し、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';