in reply to How to pass two lists to a sub?
To do this, pass references to the arrays and dereference in the subroutine:
process_something($scalar1, $scalar2, \@list1, \@list2); sub process_something { my ($scalar1, $scalar2, $ra_list1, $ra_list2) = @_; my @list1 = @$ra_list1; my @list2 = @$ra_list2; }
Another way is to pass all parameters in a hashref:
my $rh_params = { scalar1 => $scalar1, scalar2 => $scalar2, list1 => \@list1, list2 => \@list2, }; process_something($rh_params); sub process_something { my $rh_params = shift; my $scalar1 = $rh_params->{scalar1}; my $scalar2 = $rh_params->{scalar2}; my @list1 = @{$rh_params->{list1}}; my @list2 = @{$rh_params->{list2}}; }
The second method involves more coding but provides a number of benefits:
Update: Added missing line: process_something($rh_params);
Regards,
PN5
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: How to pass two lists to a sub?
by hmerrill (Friar) on Nov 05, 2004 at 12:36 UTC | |
by Prior Nacre V (Hermit) on Nov 05, 2004 at 13:11 UTC | |
by revdiablo (Prior) on Nov 05, 2004 at 19:25 UTC | |
by revdiablo (Prior) on Nov 05, 2004 at 19:51 UTC | |
by archen (Pilgrim) on Nov 05, 2004 at 23:18 UTC | |
by hmerrill (Friar) on Nov 08, 2004 at 13:31 UTC | |
by revdiablo (Prior) on Nov 08, 2004 at 17:42 UTC | |
by hmerrill (Friar) on Nov 08, 2004 at 18:57 UTC |