in reply to Predefining sub Parameters

Well, you're going to have to change that array in the middle. You can either make it a reference, or move it to the end. Also, you have to read in the parameters yourself, it's not quite as automatic as C or Java in that sense.

So by the first option, it should be:

sub functionname { my ($string_param, $array_param_ref, $other_string_param) = @_; my @array_param = @$array_param_ref; # do something with parameters, return values }
That code would be called like: functionname("string",['array_item1', $arrayItem2, '...'], "other_string_param");

Or, you could put it at the end:

sub functionname{ my ($string_param, $other_string_param, @array_param) = @_; # do something with parameters, return values }
where it'll slurp up all remaining args. And that code would be called like: functionname("string", "other_string_param", 'array_item1', $arrayItem2, '...');

Hope that helps.