./program.pl -a param1 param2 -b param3 param4
####
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
my %options = ();
GetOptions (
"a=s" => \$options{'a'},
"b=s" => \$options{'b'},
"z!" => \$options{'z'},
);
my %Subs = (
'a' => \&do_a,
'b' => \&do_b,
'z' => \&do_z,
);
while (my ($sub_name, $function) = each %Subs){
$function->($options{$sub_name});
}
sub do_a {
my $active = shift;
return unless $active;
my $param1 = $active;
# my $param2 = shift @ARGV;
# print "$param1, $param2, \n";
}
sub do_b {
my $active = shift;
return unless $active;
my $param1 = $active;
# my $param2 = shift @ARGV;
# print "$param1, $param2, \n";
}
sub do_z {
my $active = shift;
return unless $active;
#do stuff without parameters
}
####
my $param2 = shift @ARGV; #commented out in the code above
####
$perl program.pl -a param1_a param2_a -b param1_b param2_b
param1_a, param2_a,
param1_b, param2_b,
####
$perl program.pl -b param1_b param2_b -a param1_a param2_a
param1_a, param2_b,
param1_b, param2_a,