in reply to pass command line parameters

From my reading of your question, I think the code below is what your looking for. With the right options, Getopt::Long parses the command line for you, up to the subsidiary perl script, and leaves the rest of the line intact for you to call call that script, or modify things.
use strict; use Getopt::Long; my $fst_a_opt_value; my $fst_b_opt_value; print "ARGV before = @ARGV\n"; Getopt::Long::Configure("pass_through","require_order"); GetOptions( 'a=i' => \$fst_a_opt_value, 'b' => \$fst_b_opt_value, ); print "first a = $fst_a_opt_value \n"; print "first b = $fst_b_opt_value \n"; print "ARGV after = @ARGV\n"; # #prints # ARGV before = -a 1 -b b.pl -a 2 -b 2 -c 1 # first a = 1 # first b = 1 # ARGV after = b.pl -a 2 -b 2 -c 1