Getopt::Simple - Provide a simple wrapper around Getopt::Long.
Getopt::Simple
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()
dumpOptions() prints all your option's keys and their current values.
dumpOptions() does not return anything.
getOptions()
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
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
getOptions() returns 0 for failure and 1 for success.
Each key in the hash ref is the name of a command line switch
Each key points to a hash ref which defines the nature of that command line switch
The keys and values of this nested hash ref are as follows.
default => 'Some value'
This key, value pair is mandatory.
This is the default value for this switch.
Examples:
default => '/users/home/dir' default => $ENV{'REMOTEHOST'} || '127.0.0.1'
env => '-' || 'Some short help text'
This is help test, to indicate that the calling program can use an environment variable to set the default value of this switch.
Use '-' to indicate that no environment variable is used.
env => '-' env => '$REMOTEHOST'
Note the use of ' to indicate we want the $ to appear in the output.
type => 'Types as per Getopt::Long'
This is the type of the command line switch, as defined by Getopt::Long.
type => '=s' type => '=s@',
verbose => 'Some long help text'
This key, value pair is optional.
This is long, explanatory help text which is displayed below the help containing the three columns of text: switch name, env value, default value.
verbose => 'Specify the username on the remote machine', verbose => 'Specify the home directory on the remote machine'
order => \d+
This is the sort order used to force the help text to display the switches in a specific order down the page.
order => 1 order => 9
helpOptions()
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.
Exporter
Getopt::Long
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
To install Getopt::Simple, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Getopt::Simple
CPAN shell
perl -MCPAN -e shell install Getopt::Simple
For more information on module installation, please visit the detailed CPAN module installation guide.