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