I was talking to a friend about foreach aliasing the loop variable one
by one through the list provided...  As he was playing around with it,
came across this:

  use Data::Dumper;
  @headers = ("header 1","header 2","header 3");
  @body = ("body A","body B","body C");
  $h = 4;
  foreach (@headers,"",@body) {
        print "$h: $_\n";
            @body = ();
                push @headers,"header ".$h++;
  }
  print "\n", scalar @headers, "\n", Dumper [EMAIL PROTECTED];

Which produces:

  4: header 1
  5: header 2
  6: header 3
  7: 
  8: header 4
  9: header 5
  10: header 6

  10
  $VAR1 = [
            'header 1',
            'header 2',
            'header 3',
            'header 4',
            'header 5',
            'header 6',
            'header 7',
            'header 8',
            'header 9',
            'header 10'
          ];

And I say huh?  I follow until output line "7:".  I can even see why it
would run 3 more times (since the list fed to foreach was evaluated
before @body was modified).

What I don't get is how the next 3 elements of @headers get in there?
Is this part of the "don't mess with the loop vars while looping"
clause?

-- 
Dan Boger
[EMAIL PROTECTED]
 
_______________________________________________
Boston-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/boston-pm

Reply via email to