my $foo = [ 1, [2, 3], [4, [5, 6, 7]], ]; my $path = Thing->new($foo); while( defined( my $p = $path->next )) { print join( ' ' => @$p ), "\n"; } __PRDDUCES__ 1 2 4 5 1 2 4 6 1 2 4 7 1 3 4 5 1 3 4 6 1 3 4 7