sub DESTROY { my $self = shift; eval { store $self, DATA_FILE }; die $@ if $@; } #### ... sub logcroak { Carp::croak(@_); } ... open(FILE, ">$file") || logcroak "can't create $file: $!"; ...