my @opts = qw( a b ... z ); GetOptions( \my %opts, ( map { "$_=s" } @opts ), ) or die("...\n"); for my $opt (@opts) { die("...\n") if !exists($opts{$opt}); } #### my %opt_defs = ( ( map { $_ => "$_=s" } qw( a b ... ) ), ( map { $_ => "$_=i" } qw( i j ... ) ), ); GetOptions( \my %opts, values(%opt_defs), ) or die("...\n"); for my $opt (keys(%opt_defs)) { die("...\n") if !exists($opts{$opt}); }