package MyModule; use strict; use warnings; { local $@; eval { use Data::Dump; 1;}; # tried the following to simulate # Data::Dump absence but did not work # $@ = 1; no Data::Dump; use if $@, 'Data::Dumper'; } _mydump('this is %INC',\%INC); sub _mydump{ my ( $msg, $ref) = @_; print "$msg:\n"; { local $@; eval {dd $ref}; print Dumper $ref if $@; } }