Следующий код демонстрирует два способа достижения того, что вы хотите.
В методе home home используется map и join для создания списка опций.(Grep исключает опции undef. Вы можете удалить часть grep {}.)
Метод Data :: Dumper может быть желателен, поскольку он доступен для оценки.
#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Long qw(:config gnu_getopt);
use Data::Dumper;
$Data::Dumper::Sortkeys = 1;
$Data::Dumper::Indent = 0;
$Data::Dumper::Terse = 1;
my %opts = (
dir => undef,
verbose => 0,
silent => 0,
);
GetOptions(\%opts,
'dir|d=s',
'verbose|v+',
'silent+',
)
or die("Usage: blah\n");
# also see Getopt::Long perldoc for pod2usage
print( "home grown:\n",
join(" ", map { sprintf('%s=>%s',$_,$opts{$_}||'undef') }
grep {defined $opts{$_}} keys %opts ),
"\n" );
print( "Dumper:\n",
Dumper(\%opts),
"\n" );
Пример:
apt12j$ ~/tmp/x.pl -vv --silent
home grown:
verbose=>2 silent=>1
Dumper:
{'dir' => undef,'silent' => 1,'verbose' => 2}