my $f = sub { print "a: ", a(), " b: ", b(), "\n";}; #### sub mdo { my @to_be_cleaned; while (scalar @_ > 1) { my $name = shift; my $fn = shift; add_var($name,$fn); push @to_be_cleaned, $name; } my $fn = shift; my $return = $fn->(); require namespace::clean; namespace::clean->clean_subroutines('main', @to_be_cleaned); return $return; }