develooper Front page | perl.beginners | Postings from February 2002

Re: Arrays 1x3 or 3x1 - The real questions

Thread Previous | Thread Next
From:
Steven M. Klass
Date:
February 12, 2002 13:24
Subject:
Re: Arrays 1x3 or 3x1 - The real questions
Message ID:
200202122123.g1CLNkc26955@vivids1.nsc.com
how does "shift" work?  In other words what if I do this

&Somefunction($var1, \@arry)

sub SomeFunction {
	my $var = $_[0]
	my $array = shift;
	foreach(@{$array}) {
	  print "$_\n";
	}
 }

How does the shift operator know which is which?  I called it specifically 
earlier, because of this.  What am I missing?

Thanks so much

On Tuesday 12 February 2002 10:06 am, Brett W. McCoy wrote:
> On Tue, 12 Feb 2002, Steven M. Klass wrote:
> > Let's start off with some simple code..
> >
> > my $arg = &SomeFunction ( my @arry = qw/one two three/)
> >
> >
> >
> > sub SomeFunction {
> > 	my @array = @_[0];
>
> No, you are only grabbing the first element of @_.  You should either pass
> the array as a reference (best way), or just grab up the entire @_.
> Keep in mind that if you pass an array and any scalars as arguments, they
> will all be flattened out into @_, as a single list.  This is why passing
> a reference is better, to differentiate lists and scalars.
>
> SomeFunction([qw(one two three)]);
>
> sub SomeFunction {
> 	my $array = shift;
> 	foreach(@{$array}) {
> 	  print "$_\n";
> 	}
> }
>
> -- Brett
>                                           http://www.chapelperilous.net/
> ------------------------------------------------------------------------
> Removing the straw that broke the camel's back does not necessarily
> allow the camel to walk again.

-- 

 Steven M. Klass
 Physical Design Manager

 National Semiconductor Corp
 7400 W. Detroit Street
 Suite 170
 Chandler AZ 85226

 Ph:480-753-2503
 Fax:480-705-6407

 steven.klass@nsc.com
 http://www.nsc.com


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About