Jon Earle wrote: > Consider this: > > while (<FD>) { > @_ = split /\s*:\s*/; > if (/something/) { > $found = $_[$#_]; > ... > > My interpretation based on what is happening: > > $_ is set to whatever current line is read-in via the while loop. That > line is split and stored into the current argument stack. If 'something' > is found in (the unchanged) $_, then $found is set to the last value from > the split command. > > My question is, why? What is ``$#_''? Is it simply considering _ to be > the array @_ and simply giving the index of the last element? If so, then
Yes. > why would $_ have elements from which to pick, if $_ is the whole line? You can have an array and a scalar with the same name. @_ and $_ do not refer to the same vrbl. $_[1] is not referring to $_ - it's referring to the 2nd element of @_. This is just normal Perl syntax. { my $found = $_[$#_]; } might be nicer to read as { my $found = $_[-1]; } -- ,-/- __ _ _ $Bill Luebkert Mailto:[EMAIL PROTECTED] (_/ / ) // // DBE Collectibles Mailto:[EMAIL PROTECTED] / ) /--< o // // Castle of Medieval Myth & Magic http://www.todbe.com/ -/-' /___/_<_</_</_ http://dbecoll.tripod.com/ (My Perl/Lakers stuff) _______________________________________________ Perl-Unix-Users mailing list [EMAIL PROTECTED] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs