Your declaration is incomplete. Insert a tab after <value>:
my $args = new Getopt::Declare <<'EOPARAM';
-k <value> print kudos
EOPARAM
if ( $args->{'-k'} )
{
print "Using value: ", $args->{'-k'}."\n";
}
From the manual (emphasis mine):
The parameter definition consists of a leading flag or parameter variable, followed by any number of parameter variables or punctuators, optionally separated by spaces. The parameter definition is terminated by the first tab that is encountered after the start of the parameter definition. At least one trailing tab must be present.
There should be a description of the switch, and at least one tab after each parameter declaration. Note that a newline is needed if declaring multiple parameters. The following
#!/usr/bin/perl
use Getopt::Declare;
my $args = new Getopt::Declare <<'EOPARAM';
-v <value>
-k <value>
EOPARAM
for ( qw(-v -k) )
{
print "Using value: ", $args->{$_}."\n"
if $args->{$_};
}
when invoked with perl 559479.pl -k bar -v foo only prints Using value: foo.
--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}
|