{ package My::Logger; sub import { my $PACKAGE = caller; no strict 'refs'; *{"$PACKAGE\::log_message"} = sub { my ($message) = @_; print STDERR "$PACKAGE - $message"; }; } } { package My::Utils; My::Logger->import; } { package main; # outputs "My::Utils - Hello", not "main - Hello" My::Utils::log_message("Hello"); }