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
);
"var1 = $var1\n"
;
"var2 = $var2\n"
;
"var3 = @var3\n"
;
"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
- 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