#!/usr/bin/perl use strict; use warnings; print 1; #insert __END__ here and debugger works fine use DB; sub import { *{(caller)[0].'::called_args'} = \&called_args if $_[1] eq 'called_args'; } sub called_args { &DB::called_args } package DB; sub called_args { my ($level) = @_; my @foo = caller( ( $level || 0 ) + 3 ); wantarray ? @DB::args : \@DB::args; }