Thanks, that's what I thought was happening, but now I have another question.
If I 'use strict' (and who doesn't), I am forced to declare $line before the
foreach loop, except I can't just type 'foreach my($line) (<>)'. I have to type
it on a preceeding line. If this is the case then why does perl localize it
anyway. If i'm declaring it before that loop shouldn't its scope carry through
the loop?

-Bob



--- Jeff 'japhy' Pinyan <[EMAIL PROTECTED]> wrote:
> On Jun 19, Bob Mangold said:
> 
> >I may have a bug somewhere in my code, but I can't find it. Before I
> >look again though please answer this for me.
> 
> >my ($line) = "hello";
> >foreach $line (<>){
> >     ..... whatever
> >}
> >print $line;
> >
> >Should it print the last line in <> or 'hello'? 
> 
> I don't think the other responders tested their code.  If they had, they'd
> see that $line would retain its value.
> 
>   my $line = 1;
>   for $line (1 .. 10) { ; }
>   print $line;  # 1
> 
> This is because the looping variable is implicitly localized to the loop
> itself.  This is not a bug.
> 
> -- 
> Jeff "japhy" Pinyan      [EMAIL PROTECTED]      http://www.pobox.com/~japhy/
> I am Marillion, the wielder of Ringril, known as Hesinaur, the Winter-Sun.
> Are you a Monk?  http://www.perlmonks.com/     http://forums.perlguru.com/
> Perl Programmer at RiskMetrics Group, Inc.     http://www.riskmetrics.com/
> Acacia Fraternity, Rensselaer Chapter.         Brother #734
> **      Manning Publications, Co, is publishing my Perl Regex book      **
> 


__________________________________________________
Do You Yahoo!?
Spot the hottest trends in music, movies, and more.
http://buzz.yahoo.com/

Reply via email to