The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

CmdArguments - Module to process arguments passed on command line

SYNOPSIS

    # program name args.pl
    use CmdArguments;

    my $var1 = 10;          # initialize variable
    my $var2 = 0;           # with default values.
    my @var3 = ( 1, 2, 3);  # well, if you like to.
    my @var4;               # but, not necessary

    my $parse_ref = [
                     [ "arg1", \$var1 ], # argTypeScalar is assumed
                     [ "arg2", \$var2,
                       {TYPE => argTypeSwitch}], # explicit argTypeSwitch
                     [ "arg3", \@var3 ], # argTypeArray assumed
                     [ "arg4", \@var4,
                       {UNIQUE => 1}], # argTypeArray assumed
                    ];

    CmdArguments::parse(@ARGV, $parse_ref);

    print "var1 = $var1\n";
    print "var2 = $var2\n";
    print "var3 = @var3\n";
    print "var4 = @var4\n";

    exit 0;

test command ...

    args.pl -arg1 23 -arg2 -arg3 2 4 3 2 5 -arg4 2 4 3 2 4

should generate following output...

    var1 = 23
    var2 = 1
    var3 = 2 4 3 2 5
    var4 = 2 4 3

DESCRIPTION

This module provides some handy functions to process command line options.

When this module is included it introduces following constants in the calling program namespace...

    argTypeScalar = 0
    argTypeArray  = 1
    argTypeSwitch = 2
CmdArguments::parse

Simplest way to use this program is to call parse (static function).

Calling syntax is...

parse(@arguments, $array_ref, $text_or_func1, $text_or_func2)

@arguments

array of command line arguments. So, @ARGV could be passed instead.

$array_ref

reference to an array containing information about how to parse data in @arguments.

basic structure of $array_ref is...

$array_ref = [ $array_ref_for_individual_tag, ...];

$array_ref_for_individual_tag = [$option_tag , $ref_of_variable, $hash_ref]; # $hash_ref is optional

$hash_ref

reference to a hash containing supplementary information about $option_tag

  $hash_ref = {
    TYPE   => argType..., # argTypeSwitch
                          # argTypeArray or argTypeScalar

    UNIQUE => 1,          # 1 or 0

    USAGE  => "help information", # try giving -h or -help
                                  # on command line

    FUNC   => sub { eval $_[0] }
  };
TYPE

this specifies what kind of variable reference is passed in $ref_of_variable. If TYPE is argTypeScalar or argTypeSwitch it assumes reference to a scalar. If TYPE is argTypeArray it assumes reference to an array.

if TYPE tag is not provided then ...

1. argTypeScalar is assumed if $ref_of_variable is a scalar reference

2. argTypeArray is assumed if $ref_of_variable is an array reference

What is argType...?
argTypeSwitch

on command line you can not provide value for an option.

argTypeScalar

on command line you must provide one and only one value

argTypeArray

on command line you can provide zero or more values

UNIQUE

this tag is applicable for option type argTypeArray only. it can be 0 or 1. 1 means make unique array. So, if an option is defined as UNIQUE then on command line if you give say 2 3 4 5 3 4 6 7 then array will hold 2 3 4 5 6 7. If it was not unique then it will hold 2 3 4 5 3 4 6 7.

FUNC

Holds a reference to a function. Function should take a scalar argument and return a scalar if option is argTypeScalar and return an array if option is argTypeArray. This is not used for option type argTypeSwitch.

Example: if option type is an argTypeArray. and function is defined like

FUNC => sub { eval $_[0] }

and if on the command line something like 1..3 or 1,2,3 is passed then it will generate an array having values 1 2 3.

$ref_of_variable

Can pass reference of a scalar or an array variable depending on what require from command line.

$option_tag

It is the name of the option tag. if option tag is opt then on command line you have to specify option like -opt.

$text_or_func1
$text_or_func2

pass text or reference to a function. If function is passed it should return text or should itself print message on STDERR. Try experimenting by passing -h or -help in the argument. $text_or_func1 is printed after the help text is printed and $text_or_func1 is used before printing helptext.

AUTHOR

Navneet Kumar, <navneet_k@hotmail.com>

6 POD Errors

The following errors were encountered while parsing the POD:

Around line 161:

=back doesn't take any parameters, but you said =back 6

Around line 163:

=back doesn't take any parameters, but you said =back 5

Around line 188:

=back doesn't take any parameters, but you said =back 4

Around line 200:

=back doesn't take any parameters, but you said =back 3

Around line 212:

=back doesn't take any parameters, but you said =back 2

Around line 214:

=back doesn't take any parameters, but you said =back 1