Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Set getopt defaults based on $0

by Anonyrnous Monk (Hermit)
on Jan 13, 2011 at 18:58 UTC ( [id://882206]=note: print w/replies, xml ) Need Help??


in reply to Set getopt defaults based on $0

Another variation with Getopt::Long and hash tables to declare the defaults:

#!/usr/bin/perl -w use strict; use Getopt::Long; my ($verb, $obj) = $0 =~ m|([^/]+)-([^/]+)$|; my %defaults_verbs = ( 'create' => { foo => "foo", bar => "", }, 'update' => { foo => "", bar => "bar", }, #... ); my %defaults_objs = ( 'tap' => { baz => 42, }, 'fap' => { baz => 99, }, #... ); my %defaults_combined = ( 'create-tap' => { foo => "boo", baz => 13, }, #... ); # merge individual defaults hashrefs (order matters), e.g.: my $opts = { %{ $defaults_verbs{$verb} //{} }, %{ $defaults_objs{$obj} //{} }, %{ $defaults_combined{"$verb-$obj"} //{} }, }; GetOptions($opts, 'foo=s', 'bar=s', 'baz=i'); for my $opt (sort keys %$opts) { print "$opt=$opts->{$opt}\n"; }
$ for name in create-tap update-tap ; do ln -s 882180.pl $name ; done $ ./create-tap bar= baz=13 foo=boo $ ./create-tap --foo=FOO bar= baz=13 foo=FOO $ ./update-tap bar=bar baz=42 foo= $ ./update-tap --baz=55 bar=bar baz=55 foo=

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://882206]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (2)
As of 2024-04-24 17:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found