in reply to Re^2: Let a module call a sub of the caller
in thread Let a module call a sub of the caller

I am not that familiar with the processing phases BEGIN,INIT,END, that's why I asked. Is there a way to call the method at the END of execution of the caller?

END time is the same for all, so yes, that works:

# file CallMe.pm package CallMe; use 5.010; use strict; use warnings; my @to_call; sub import { my ($self, @routines) = @_; my $call_package = (caller(1))[0]; push @to_call, $call_package. "::$_" for @routines; } END { no strict 'refs'; $_->() for @to_call; } 1;

And then in your script:

use 5.010; use lib '.'; use CallMe 'foo'; sub foo { say 42 } say 'in mainline';

prints

in mainline 42