package my::autodie; use strict; use warnings; use parent qw(autodie); use autodie::exception; use autodie::hints; autodie::hints->set_hints_for( 'Some::Module::some_sub' => { scalar => sub { 1 }, # No calling in scalar/void context list => sub { @_ == 2 and not defined $_[0] } }, ); autodie::exception->register( 'Some::Module::some_sub' => sub { my ($E) = @_; if ($E->context eq "scalar") { return "some_sub() can't be called in scalar context"; } my $error = $E->return->[1]; return "some_sub() failed: $error"; } ); 1;