Well, one answer/question is "why NOT use references?"
Another idea may be to pass in the size of the array, then you can slice them apart or something.
use warnings; use strict; use Data::Dumper; my @a=qw(1 2 3 4 5); my %b=( a => 1, b => 2, c => 3 ); sub printdata { my $size=shift; my @x=@_[0..$size]; my %y=@_[$size+1..$#_]; print Dumper(\@x, \%y); } printdata($#a, @a, %b); #__OUTPUT__ $VAR1 = [ '1', '2', '3', '4', '5' ]; $VAR2 = { 'c' => 3, 'a' => 1, 'b' => 2 };
I don't usually do this. I usually work with references since you take a performance hit when perl is forced to copy your arrays and hashes into a new memory slot when you pass then into a function. If there is a better way to do this, lemme know! I could swear I read about this in the camel book, but I am too tired to look it up now.
HTH
In reply to Re: problem with passing array and hash to sub-routine
by pzbagel
in thread problem with passing array and hash to sub-routine
by dannoura
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |