use strict; use warnings; package bozo; use Message; sub failing { my $log = Message->new ; $log->set_error("this always fails"); return } package main; use Message; my $log = Message->new ; # I sometimes do this eval { `touch /toto` }; if ($@) { $log->set_error("it failed! : $@") ; # or this if ( not 0 ) { $log->set_error("it failed too!") } # now calling the failing sub up there: if ( not bozo::failing() ) { print $log->get_message(); }