in reply to Re: Getopt::Declare not working
in thread Getopt::Declare not working

Excellent, all I was missing was the tab. My problem now is; I have added an exclude stmt to a section, and I want Getopt::Declare to die if the exclude fails, for example
my $args = new Getopt::Declare <<'EOPARAM'; [strict] -e <env> Collect data for systems in one env (can be used w +ith -t) -t <type> Collect data for one type of system (can be used +with -e) -s <systemname> Collect data for one system [excludes: -e -t] -- EOPARAM
the -s option cannot be used with either -e or -t, and I want the command line parser to cause the program to die gracefully when this happens. Right now, the parser spits out an error ("you cant use -s with -(e|t)") and then program execution continues.

Replies are listed 'Best First'.
Re^3: Getopt::Declare not working
by shmem (Chancellor) on Jul 06, 2006 at 16:09 UTC
    Hum? As for this code
    #!/usr/bin/perl use Getopt::Declare; my $args = new Getopt::Declare <<'EOPARAM'; [strict] -e <env> Collect data for systems in one env (can be us +ed with -t) -t <type> Collect data for one type of system (can be us +ed with -e) -s <systemname> Collect data for one system [excludes: -e -t] -- EOPARAM for ( qw(-e -s -t) ) { print "Using value: ", $args->{$_}." for switch $_\n" if $args->{$_}; } __END__ perl 559575.pl -s quux -e foo -t bar

    it just dies after spitting out it's laments:

    Error: parameter '-e' not allowed with parameter '-s' Error: parameter '-t' not allowed with parameter '-s' Error: unrecognizable argument ('foo') Error: unrecognizable argument ('bar') (try '559575.pl -help' for more information)
    and the for loop is not entered. *shrug* Are you masking signals/__DIE__ ?

    --shmem

    _($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                                  /\_¯/(q    /
    ----------------------------  \__(m.====·.(_("always off the crowd"))."·
    ");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}