# define option names and defaults
our $UNIQUE_OPT = q/unique/;
our $FORCE_OPT = q/force/;
our $VERBOSE_OPT = q/verbose/;
our $OUTPUT_EXT_OPT = q/ext/;
# create option specs for Getopt
my @option_config = qw( $UNIQUE_OPT
$FORCE_OPT
$VERBOSE_OPT
$OUTPUT_EXT_OPT=s
);
# create option hash for Getopt
my(%option, %option_config);
foreach my $option_config ( @option_config )
{
# copy $option_config to $option_name, keep only name of option
( my $option_name = $option_config ) =~ s/\W.*$//;
# save a reference to the %option value in %option_config hash
$option_config{$option_config} = \$option{$option_name};
}
# process options
GetOptions %option_config or usage();
if ( $option{$UNIQUE_OPT} and $option{$FORCE_OPT} )
{
die "-$UNIQUE_OPT and -$FORCE_OPT are mutually exclusive."
. " See $SCRIPT_NAME -help for syntax.";
}
####
C:\>perl myscript stuff
Error in option spec: "$VERBOSE_OPT"
Error in option spec: "$FORCE_OPT"
Error in option spec: "$OUTPUT_EXT_OPT=s"
Error in option spec: "$UNIQUE_OPT"
####
my @option_config = split ' ',
qq( $UNIQUE_OPT
$FORCE_OPT
$VERBOSE_OPT
$OUTPUT_EXT_OPT=s
);
####
split(' ', q/STRING/);
####
my @option_config = qw" $UNIQUE_OPT
$FORCE_OPT
$VERBOSE_OPT
$OUTPUT_EXT_OPT=s
";