You should always include "use strict" and "use warnings" when you are writing code. Take a look at the subryoutine and you will see:
$temp = $_[0] means that temp is now a reference to @array $temp[0] is the first element of the array @temp, which was created when you used the element $$_[0][0] would then be the same as $$temp[0] But to make sure that you can't make mistakes like this when dereferencing an array, put braces around the reference: ${$_[0]}[0] ${$temp}[0] Also, if you want to make it even easier to read, try this notation: $temp->[0] which is the same as: ${$temp}[0] P.S. The same works for hashes. $temp->{key} accesses an element of the hash referenced by $temp -----Original Message----- From: Paul Kraus [mailto:[EMAIL PROTECTED]] Sent: Monday, January 06, 2003 1:30 PM To: Perl Subject: passing array ref to subroutine I don't understand why the output of the two print statements inside the subroutine is different. The one only prints the new line. #!/usr/bin/perl -w @array=qw/paul david kraus/; $arrayref=\@array; print "$arrayref\n"; print "$$arrayref[0]\n"; &suby($arrayref); sub suby { $temp=$_[0]; print "$$_[0][0]\n"; print "$temp[0]\n"; } Paul Kraus Network Administrator PEL Supply Company 216.267.5775 Voice 216-267-6176 Fax www.pelsupply.com -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]