# Sample code use Data::Dumper; my $k = 42; my $j = sub { $k }; sub r { my $r = shift; $r--; if ( $r and $k and $j->() ) { r( $r ); } else { print Dumper( [ map $_->hash, PadViewer->new( \&r )->pads ] ); } } r( 10 );