Hvordan kan jeg undertrykke advarsler sendes ut av getopt :: Std :: getopts?

stemmer
1

Jeg har kort manus test.pl

#!/usr/bin/perl
use locale;
use encoding 'utf-8';

use Getopt::Std;

getopts(dei) or print STDERR TRALALALALA\n; 
print@ARGV\n;

Jeg trenger å undertrykke Unknown option:meldinger generert av getopts og bare får mine TRALALALALA på stderr.

Publisert på 13/03/2013 klokken 15:10
kilden bruker
På andre språk...                            


2 svar

stemmer
6

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

Eller du kan selv legge inn "TRALALALALA" i advare føreren:

{
    local $SIG{__WARN__} = sub { print STDERR "TRALALALALA\n" };
    getopts("dei");
}
Svarte 13/03/2013 kl. 15:20
kilden bruker

stemmer
0

Du kan også lokalisere *::STDERRog åpne den til en buffer i en blokk som så:

@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';
Svarte 13/03/2013 kl. 15:35
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more