Andrew Gaffney wrote: > > I'm trying to write a subroutine that takes two scalars and two arrays as > parameters. I've > read that if you try to do this in a function, both arrays will get combined within > '@_'.
All the values, including the two scalars, will be combined in a single list and be accessible through the @_ array. > Instead, I want the subroutine to take two scalars and two array references. I will > not be > doing any modification of the array data in the subroutine, so it will be more > effecient > this way, anyway. I vaguely remember reading in Learning Perl (or maybe Programming > Perl) > that the subroutine can be defined something like: > > sub my_subroutine([EMAIL PROTECTED]@) { > > } Yes. The perlsub.pod document which should be on your hard drive contains a more complete explanation of how subroutines work in Perl. > My syntax may be off. Someone please correct me if so. (Do I really need to say > this?) > Now, how do I get those values in the subroutine? > > sub my_subroutine([EMAIL PROTECTED]@) { > my ($scalar1, $scalar2, $arrayref1, $arrayref2) = @_; > } Yes. > Another thing, how do you access an array through a reference? To access a complete array: @$arrayref1 > I know you access a hash > through a reference by doing '$hashref->{hashkey}' instead of just > '$hashref{hashkey}', > but I've never done it with arrays (never needed to). To access an array element: $arrayref1->[ 4 ] > One more thing (I promise). Do I > need to do anything special to pass arrays as references to the function, like this: > > my_subroutine $scalar1, $scalar2, [EMAIL PROTECTED], [EMAIL PROTECTED]; > > or can I pass them without the '\'? Without the '\'. perl uses the prototype ([EMAIL PROTECTED]@) to convert the arrays to references. John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>