sub yoursub { my ($rangearrayref, $firstre, $secondre, $subref) = @_; ... } yoursub([2..7], 'NETPACKET', 'Network', \&transformNetpacketSub); #### sub yoursub { my %args = @_; my ($rangearrayref, $firstre, $secondre, $subref) = ($args{-range}, $args{-firstre}, $args{-secondre}, $args{-transformsub}); ... } yoursub(-range => [2..7], -firstre=>'NETPACKET', -secondre=>'Network', ->transformsub=>\&transformNetpacketSub); #### sub transformNetpacketSub { my $str = shift; # do anything with string return $str; }