1

私は短いスクリプト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 のみを取得する必要があります。

4

2 に答える 2

6
{
    local $SIG{__WARN__} = sub { };  # Supress warnings
    getopts("dei")
        or print STDERR "TRALALALALA\n";
}

または、警告ハンドラに「TRALALALALA」を埋め込むこともできます。

{
    local $SIG{__WARN__} = sub { print STDERR "TRALALALALA\n" };
    getopts("dei");
}
于 2013-03-13T18:20:18.503 に答える
0

次のように、ローカライズ*::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';
于 2013-03-13T18:35:13.387 に答える