use vars qw( $ERROR ); sub new { bless {}, shift } sub error { my $msg = $_[1]; $msg .= "\n" unless $msg =~ /\n$/; if (ref($_[0])) { $_[0]->{_errstr} = $msg; } else { $ERROR = $msg; } return; } sub errstr { ref($_[0]) ? $_[0]->{_errstr} : $ERROR } #### return $obj->error("Got an error") unless $foo; ## OR return $class->error("Got an error") unless $foo; #### $obj->foo or die $obj->errstr; ## OR My::Class->foo or die My::Class->errstr;