NAME
Getopt::Fancy - Object approach to handling command line options,
focusing on end user happiness
SYNOPSIS
use Getopt::Fancy;
my $opts = Getopt::Fancy->new();
$opts->add("db", GT => "=s",
EX => "<db_name>",
DESC => "The database to dump. Leave unset for all databases.",
DEF => "teen_titans",
ALLOWED => ["--all-databases", "mydb", "teen_titans"],
REGEX => '^[a-zA-Z0-9\_]+$',
REQ => 0,
SECTION => "Required DB Params");
# Allow just printing out of set options
$opts->add("check_args", DESC => "Just print all the options", SECTION => "Misc Params");
# Allow user to specify list of options s/he needs help with
$opts->add("help", GT => ":s@", EX => "[option1,option2..]",
DESC => "Give option names and it'll print the help for just those options, otherwise all.",
SECTION=>"Misc Params", COMMAS=>1);
# Get the command line options
my $error_msg = $opts->get_options();
print_usage($error_msg) if $error_msg;
print "Will dump this database: $opts->{db} \n";
print "User wants help information on these: " . join(", ", @{$opts->{help}}) . "\n" if ($opts->{help});
print_usage() if $opts->{help};
print_args() if $opts->{check_args};
sub print_args
{
print $opts->get_values();
exit(0);
}
sub print_usage
{
my $hopts;
my $msg = shift;
$hopts = $opts->{help} unless (scalar @{$opts->{help}} == 0);
print "usage: $0 <REQUIRED_ARGS> <OPTIONAL_ARGS>\n";
print $opts->get_usage($hopts);
print "ERROR: $msg\n" if $msg;
exit(0);
}
DESCRIPTION
"Getopt::Fancy" Allows command line options to be all in one place in
your script including default values, allowed values, user-friendly
descriptions, required flags and pattern matching requirements. Ofttimes
script writers skimp on the usage information or have out-dated help
information. This modules helps script writers to be better citizens.
This module uses Getopt::Long, so the same rules apply.
METHODS
"my $opts = GetOpt::Fancy->new()"
Construct a new object.
"$opts->add($opt_name, %config)"
"add()" is where you specify the command line options you want to
accept and the configuration for each.
$opts->add("hostname", GT => "=s",
EX => "<my_hostname>",
DESC => "The hostname to connect to to do whatever.",
DEF => "batcomputer",
REGEX => '^[a-zA-Z0-9\_\-\.]+$',
SECTION => "Connection Params");
The possible config values are ...
* GT - The Getopts type specification (=i, :s, =s@, etc)
* DEF - The default value for this option if the user running your
script doesn't give one. If the option is multivalued, pass in a
reference to an array of values.
* REQ - A flag (1 or 0) denoting if this option is required. (You
can just leave this out if it's 0)
* REGEX - A regular expression the value must match.
* ALLOWED - A reference to an array of allowed values. This allows
you to restrict the set.
* COMMAS - A flag (1 or 0) denoting if this multivalued option
should allow comma separated values. This only applies to
options that have a "@" in their GT (=s@, etc). If this is set,
the user of your script can specify multiple values by just
doing something like: -colors red,green,blue
* EX - A human readable example value for the user of your script
that is printed during -help
* DESC - A human readable description of the option for the user
of your script that is printed during -help
* SECTION - A human readable section header for the user of your
script that is printed during -help. This allows you to group
similar options together
"$opts->get_options()"
Call this when it's time to read and parse the command line options.
It will return a human readable string describing to the end user
what they did wrong. If all is well, returns undef.
After you call this, you can then treat $opts as a hash ref:
$opts->{my_option}
"$opts->get_usage([optional,list,of,options])"
Returns a pretty, printable string of all the possible options,
example values, descriptions, allowed values and default values,
grouped by SECTION. If a reference to an array of option names is
passed in, only usage information for those options is included.
"$opts->get_values()"
Returns a pretty, printable string of all the options and currently
set values.
The object pretends to be a hash ref, so if you want values
themselves, just do:
$opts->{my_option}
"$opts->get_error()"
Returns the human readable error string describing the error during
the options handling. This string is also returned after
"get_options"
LEGALESE
Copyright 2006 by Robert Powers, all rights reserved. This program is
free software, you can redistribute it and/or modify it under the same
terms as Perl itself.
AUTHOR
2006, Robert Powers <batman@cpan.org>