Getopt::Simple - Provide a simple wrapper around Getopt::Long.
use Getopt::Simple;
# Or ...
# use Getopt::Simple qw($switch);
my($options) =
{
help =>
{
type => '',
env => '-',
default => '',
# verbose => '', # Not needed on every key.
order => 1,
},
username =>
{
type => '=s', # As per Getopt::Long.
env => '$USER', # Help text.
default => $ENV{'USER'} || 'RonSavage', # In case $USER is undef.
verbose => 'Specify the username on the remote machine',
order => 3, # Help text sort order.
},
password =>
{
type => '=s',
env => '-',
default => 'password',
verbose => 'Specify the password on the remote machine',
order => 4,
},
};
my($option) = Getopt::Simple -> new();
if (! $option -> getOptions($options, "Usage: testSimple.pl [options]") )
{
exit(-1); # Failure.
}
print "username: $$option{'switch'}{'username'}. \n";
print "password: $$option{'switch'}{'password'}. \n";
# Or, after 'use Getopt::Simple qw($switch);' ...
# print "username: $$switch{'username'}. \n";
# print "password: $$switch{'password'}. \n";
Getopt::Simple is a pure Perl module.
The Getopt::Simple module provides a simple way of specifying:
-
Command line switches
-
Type information for switch values
-
Default values for the switches
-
Help text per switch
This module is available both as a Unix-style distro (*.tgz) and an
ActiveState-style distro (*.ppd). The latter is shipped in a *.zip file.
See http://savage.net.au/Perl-modules.html for details.
See http://savage.net.au/Perl-modules/html/installing-a-module.html for
help on unpacking and installing each type of distro.
new(...) returns a Getopt::Simple object.
This is the class's contructor.
Usage: Getopt::Simple -> new().
This method does not take any parameters.
dumpOptions() prints all your option's keys and their current values.
dumpOptions() does not return anything.
The getOptions() function takes 4 parameters:
-
A hash ref defining the command line switches
The structure of this hash ref is defined in the next section.
This parameter is mandatory.
-
A string to display as a help text heading
This parameter is mandatory.
-
A Boolean. 0 = (Default) Use case-sensitive switch names. 1 = Ignore case
This parameter is optional.
-
A Boolean. 0 = Return after displaying help. 1 = (Default) Terminate with
exit(0)
after displaying help
This parameter is optional.
getOptions() returns 0 for failure and 1 for success.
helpOptions() prints nicely formatted help text.
helpOptions() does not return anything.
Command line option values are accessed in your code by dereferencing
the hash reference $$classRef{'switch'}. Two examples are given above,
under synopsis.
Alternately, you can use the hash reference $switch. See below.
Command line option values are accessed in your code by dereferencing
the hash reference $switch. Two examples are given above,
under synopsis.
Alternately, you can use the hash reference $$classRef{'switch'}. See above.
As always, be aware that these 2 lines mean the same thing, sometimes:
-
$self -> {'thing'}
-
$self->{'thing'}
The problem is the spaces around the ->. Inside double quotes, ``...'', the
first space stops the dereference taking place. Outside double quotes the
scanner correctly associates the $self token with the {'thing'} token.
I regard this as a bug.
Getopt::Simple was written by Ron Savage <ron@savage.net.au> in 1997.
Australian copyright (c) 1997-2002 Ron Savage.
All Programs of mine are 'OSI Certified Open Source Software';
you can redistribute them and/or modify them under the terms of
The Artistic License, a copy of which is available at:
http://www.opensource.org/licenses/index.html
|