in reply to Set getopt defaults based on $0

Using Getopt::Long you can do this by having a section where you declare all of your variables, a second one where you initialize them with default values, then call GetOptions, then have your main script.

So you can do something like this.

my ($action, $type, $foo, (other variables)); my $name = $0; $name =~ s~.*/~~; my ($verb, $object) = split /-/, $name; $action = $verb; # Case statement for defaults for verb. # Case statement for defaults for object. # Case statement for defaults for name (combines verb + object) GetOptions( "action=s" => \$action, "type=s" => \$type, "foo=i" => \$foo, ... ); and more program
If you're using Perl 5.10 or better you can use feature "switch"; at the beginning and then:
given($object) { when ("tap") {$type = "domestic"} .... }