my $Verbose; my $Secret; %Options = { 'verbose+' => [ \$Verbose, "Makes the output more verbose." ], 'secret!' => [ \$Secret, "Enables secret features." ], }; ... sub usage { ... foreach my $option (sort keys %Options) { my $switch = $option; $switch =~ s/=.*$//; $switch =~ s/\W*$//; $message = $Options{$option}[1]; $message .= " Adding $switch increases the effect." if $option =~ /\+$/; $message .= " Use --no$switch to disable." if $option =~ /\!$/; print Wrap(undef, undef, "$switch: $message"), $/; } ... GetOptions(map { $_, $Options{$_}[0] } keys %Options);