# New Ticket Created by  "Carl Mäsak" 
# Please include the string:  [perl #58392]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=58392 >


r30589:
$ cat for-loop-recursion.bug
sub f($l) {
    return() if $l <= 0;
    say "entering $l";
    for 1..3 {
      f($l-1);
      say "looping in $l";
    }
}
f(2);

$ ./perl6 for-loop-recursion.bug
entering 2
entering 1
looping in 1
looping in 0
looping in -1
looping in 2
looping in -2
looping in -3

Something to do with local pads, perhaps?

FWIW, I can trace the bug back to r29884, the first revision that
gives any output at all on the above script.

Here's a Perl 5 comparison:

$ cat for-loop-recursion.p5
use strict;
use warnings;

sub f {
    my $l = shift;
    return if $l <= 0;
    print "entering $l\n";
    for (1..3) {
        f($l-1);
        print "looping in $l\n";
    }
}
f(2);

$ perl for-loop-recursion.p5
entering 2
entering 1
looping in 1
looping in 1
looping in 1
looping in 2
entering 1
looping in 1
looping in 1
looping in 1
looping in 2
entering 1
looping in 1
looping in 1
looping in 1
looping in 2

Reply via email to