my $call=0;
sub generator (;$) {
my $inner_iter=shift;
my $dummy;
$outer_iter=sub {};
# $outer_iter=sub { $inner_iter->() };
# $outer_iter=sub { $dummy++ };
$call++;
print "Call Nr $call\n";
if ($inner_iter){
print $inner_iter."\n";
if ( $inner_iter eq $outer_iter) {
print "ERROR !!!\n"
}
}
return $outer_iter;
}
print generator generator;
####
/usr/bin/perl -w /tmp/tst.pl
Call Nr 1
Call Nr 2
CODE(0x90fa080)
ERROR !!!
CODE(0x90fa080)
####
Call Nr 1
Call Nr 2
CODE(0x9604880)
CODE(0x9623210)
####
sub gen_arr {
my $inner_arr=shift;
print my $outer_arr=[];
return $outer_arr;
}
gen_arr gen_arr;
#prints ARRAY(0xa179880)ARRAY(0xa179760)