Getopt::Alt - Alternate method of processing command line arguments
This documentation refers to Getopt::Alt version 0.1.2.
use Getopt::Alt; # Create a new options object my $opt = Getopt::Alt->new( { default => { string => 'default' }, }, [ 'string|s=s', ... ], ); print "String = " . $opt->opt->{string} . "\n"; # Getopt::Long like usage use Getopt::Alt qw/get_options/; # most basic form my $options = get_options( 'string|s=s', 'int|i=i', 'hash|h=s%', 'array|a=s@', 'increment|c+', 'nullable|n=s?', 'negatable|b!', ); print Dumper $options->opt; # passed parameters print join ',', @{ $options->files }; # non option parameters # with defaults my $options = get_options( { negatable => 1 }, 'string|s=s', 'int|i=i', 'hash|h=s%', 'array|a=s@', 'increment|c+', 'nullable|n=s?', 'negatable|b!', ); # with configuration my $options = get_options( { helper => 1, # default when using get_options sub_command => 1, # stop processing at first non argument parameter }, [ 'string|s=s', 'int|i=i', 'hash|h=s%', 'array|a=s@', 'increment|c+', 'nullable|n=s?', 'negatable|b!', ], ); print $cmd; # sub command # with sub command details my $options = get_options( { helper => 1, # default when using get_options sub_command => { sub => [ 'suboption' ], other => [ 'verbose|v' ], }, }, [ 'string|s=s', 'int|i=i', 'hash|h=s%', 'array|a=s@', 'increment|c+', 'nullable|n=s?', 'negatable|b!', ], ); print Dumper $option->opt; # command with sub command options merged in # auto_complete my $options = get_options( { helper => 1, # default when using get_options auto_complete => sub { my ($opt, $auto) = @_; # ... code for auto completeion # called if --auto-complete specified on the command line }, }, [ 'string|s=s', 'int|i=i', ], );
The aim of Getopt::Alt is to provide an alternative to Getopt::Long that allows a simple command line program to easily grow in complexity. It or to a package with multiple commands. The simple usage is quite similar to Getopt::Long:
Getopt::Alt
In Getopt::Long you might get your options like:
Getopt::Long
use Getopt::Long; my %options = ( string => 'default' ); GetOptions( \%options, 'string|s=s', ... );
The found options are now stored in the %options hash.
%options
In Getopt::Alt you might do the following:
use Getopt::Alt qw/get_options/; my %default = ( string => 'default' ); my $opt = get_options( \%default, 'string|s=s', ... ); my %options = %{ $opt->opt };
This will also result in the options stored in the %options hash.
Some other differences between Getopt::Alt and Getopt::Long include:
Bundling - is on by default
Case sensitivity is on by default
Throws error rather than returning errors.
Can work with sub commands
get_options (@options | $setup, $options)
get_options ($default, 'opt1', 'opt2' ... )
This is the equivalent of calling new(...)->process but it does some extra argument processing.
Note: The second form is the same basically the same as Getopt::Long's GetOptions called with a hash ref as the first parameter.
new ( \%config, \@optspec )
default
Sets the default values for all the options. The values in opt will be reset with the values in here each time process is called
files
Any arguments that not consumed as part of options (usually files), if no arguments were passed to process then this value would also be put back into @ARGV.
process
@ARGV
bundle
Turns on bundling of arguments eg -rv is equivalent to -r -v. This is on by default.
-rv
-r -v
ignore_case
Turns ignoring of the case of arguments, off by default.
helper
If set to a true value this will cause the help, man, and VERSION options to be added the end of your
help
???
cmds
If the Getopt::Alt is being used as part of a package where individual commands have their own modules this parameter stores an instance of each commands. (Not yet fully implemented.
options
The individual command option specifications processed.
opt
The values processed from the $ARGV or arguments passed to the process method..
$ARGV
The default values for each option. The default value is not modified by processing, so if set the same default will be used from call to call.
Return: Getopt::Alt -
Description:
BUILD ()
internal method
process ()
list_options ()
Returns a list of all command line options in the current object.
best_option ()
get_files ()
There are no known bugs in this module.
Please report problems to Ivan Wills (ivan.wills@gmail.com).
Patches are welcome.
Ivan Wills - (ivan.wills@gmail.com)
Copyright (c) 2009 Ivan Wills (14 Mullion Close, Hornsby Heights, NSW Australia 2077). All rights reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
To install Getopt::Alt, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Getopt::Alt
CPAN shell
perl -MCPAN -e shell install Getopt::Alt
For more information on module installation, please visit the detailed CPAN module installation guide.