my ($level,$pkg); if ($_[1]=~/^[0-9]+$/) { # called as method $pkg=shift; $level=shift; (undef)=shift; } else { # called as function $level=shift; $pkg=shift; } my $callpkg=caller($level); heavy_export($pkg,$callpkg,@_);