NAME

Getopt::Long::Spec::Parser - Parse a Getopt::Long option spec into a set of attributes

VERSION

version 0.002

SYNOPSIS

This module parses an option specification as would normally be used with Getopt::Long, and produces a hash showing the meaning/parameters the spec describes... if that makes any sense at all...

Perhaps a little code snippet.

use Getopt::Long::Spec::Parser;

my $parser = Getopt::Long::Spec::Parser->new();
my %spec_info = $parser->parse( 'foo|f=s@{1,5}' );

# OR...

my %spec_info =
    Getopt::Long::Spec::Parser->parse( 'foo|f=s@{1,5}' );

%spec_info should be a hash containing info about the parsed Getopt::Long option specification

METHODS

new

construct a new parser.

my $parser = Getopt::Long::Spec::Parser->new();
# OR...
my $parser = Getopt::Long::Spec::Parser->new(
    debug => 1,
);

parse

parse an option specification

my %spec_info = $parser->parse( 'foo' );
# OR...
my %spec_info = Getopt::Long::Spec::Parser->parse( 'foo' );

return the info parsed from the spec as a hash, or hashref, depending on context.

In scalar context, returns a hashref, in list context, returns a hash.

NOTES on PARSING Getopt::Long OPTION SPECIFICATIONS

Described as a grammar:

opt_spec  ::=  name_spec (arg_spec)?  # if no arg_spec, option is a flag.

name_spec ::=  opt_name ("|" opt_alias)*
opt_alias ::=  /\w+/
opt_name  ::=  /\w+/

arg_spec  ::= "="  val_type                (dest_type)? (repeat)?  # simple required
            | ":" (val_type | /\d+/ | "+") (dest_type)?            # simple optional
            | "!"                                                  # flag negatable
            | "+"                                                  # flag incremental

arg_type  ::=  "s" | "i" | "o" | "f"              # string, integer, extint, float
dest_type ::=  "@" | "%"                          # array or hash
repeat    ::=  "{" (min_val)? ("," max_val)? "}"  # multiple-values per use
min_vals  ::=  /\d+/
max_vals  ::=  /\d*/

AUTHOR

Stephen R. Scaffidi <sscaffidi@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Stephen R. Scaffidi.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.