NAME
Getopt::Long::More - Like Getopt::Long, but with more stuffs
VERSION
This document describes version 0.001 of Getopt::Long::More (from Perl distribution Getopt-Long-More), released on 2016-12-03.
DESCRIPTION
This module is a wrapper and drop-in replacement for Getopt::Long. It provides the same interface as Getopt::Long and, unlike other wrappers like Getopt::Long::Complete it does not change default configuration and all Getopt::Long configuration are supported. In fact, Getopt::Long::More behaves much like Getopt::Long until you start to use optspec object as one or more option handlers.
ABSTRACT
use Getopt::Long::More; # imports GetOptions as well as optspec; you can also
# explicitly import Configure, GetOptionsFromArray,
# GetOptionsFromString
my %opts;
GetOptions(
# just like in Getopt::Long
'foo=s' => \$opts{foo},
'bar' => sub { ... },
# but if you want to specify extra stuffs...
'baz' => optspec(
# at least specify this, for Getopt::Long
handler => \$opts{baz},
# specify that this option is required
required => 1,
# specify this for default value
default => 10,
# specify this if you want nicer usage message
summary => 'Blah blah blah',
# specify longer (multiparagraphs) of text for POD, in POD format
description => <<'_',
Blah blah ...
blah
Blah blah ... blah blah _
# provide completion from a list of strings
# completion => [qw/apple apricot banana/],
# provide more advanced completion routine
completion => sub {
require Complete::Util;
my %args = @_;
Complete::Util::complete_array_elem(
word => $args{word},
array => [ ... ],
);
},
),
);
OPTSPEC OBJECT
In addition to using scalarref, arrayref, hashref, or coderef as the option handler as Getopt::Long allows, Getopt::Long::More also allows using optspec object as option handler. This allows you to specify more stuffs. Optspec object is created using the optspec
function which accepts a list of property name-property value pairs:
'--fruit=s' => optspec(
handler => \$opts{fruit},
default => 'apple',
summary => 'Supply name of fruit to order',
completion => [qw/apple apricot banana/],
...
)
At least the handler
property must be specified, as this will be passed to Getopt::Long when parsing options. In addition to that, these other properties are also recognized:
required => bool
Set this to 1 to specify that the option is required.
default => any
Provide default for the option.
summary => str
Provide a short summary message for the option. This is used when generating usage/help message.
description => str
Provide a longer (multiparagraph) text, in POD format. Will be used to generate POD.
completion => array|code
Provide completion routine. Can also be a simple array of strings.
Completion routine will be passed a hash argument, with at least the following keys: word
(str, the word to be completed). It is expected to return a completion answer structure (see Complete for mor edetails) which is usually just an array of strings.
FUNCTIONS
Configure
See Getopt::Long documentation.
GetOptionsFromArray
See Getopt::Long documentation.
GetOptionsFromString
See Getopt::Long documentation.
GetOptions
See Getopt::Long documentation.
HelpMessage(@opts_spec) => str
Will print a usage/help message and exit. Sample result:
myapp [options]
Options:
--fruit=s Supply name of fruit to order (default: apple)
--debug Enable debug mode
--help|? Print help message and exit
--version Print usage message and exit
VersionMessage
See Getopt::Long documentation.
OptionsPod(@opts_spec) => str
Will generate a POD containing list of options. The text will be taken from the summary
and description
properties of optspec objects. Example result:
=head1 OPTIONS
=head2 --fruit|f=s
Supply name of fruit to order.
Blah blah blah
blah blah ...
=head2 --debug
=head2 --version
Display program version and exit.
=head2 --help
Display help message and exit.
optspec(%props) => obj
Create optspec object. See "OPTSPEC OBJECT".
COMPLETION
Getopt::Long::Mode supports shell tab completion. To activate tab completion, put your script (e.g. myapp.pl
) in PATH
and in bash shell type:
% complete -C myapp.pl myapp.pl
You can then complete option names (or option values or command-line arguments too, if you provide completion
properties). You can also use shcompgen to activate shell completion; shcompgen supports several shells and various modules.
Tab completion functionality is provided by Complete::Getopt::Long. Note that this module assumes no_ignore_case
and does not support things like getopt_compat
(starting option with +
instead of --
).
FAQ
How do I provide completion for command-line arguments:
Use the option spec <>
:
GetOptions(
...
'<>' => optspec(
handler => \&process,
completion => sub {
...
},
),
);
HOMEPAGE
Please visit the project's homepage at https://metacpan.org/release/Getopt-Long-More.
SOURCE
Source repository is at https://github.com/perlancar/perl-Getopt-Long-More.
BUGS
Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Getopt-Long-More
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
SEE ALSO
Other Getopt::Long wrappers that provide extra features: Getopt::Long::Complete, Getopt::Long::Descriptive.
If you want less features instead of more: Getopt::Long::Less, Getopt::Long::EvenLess.
AUTHOR
perlancar <perlancar@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2016 by perlancar@cpan.org.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.