- die $@ if $@;
- open(FILE,"<$file") or die "Can't open $file: $!";
- my $string = join('',<FILE>);
- close FILE or die "Can't close $file: $!";
- ($self) = FreezeThaw::thaw($string);
+ if ( $@ ) {
+ $@ = $olderror;
+ } else {
+ open(FILE,"<$file")
+ or do { $errstr = "Can't open $file: $!"; return ''; };
+ my $string = join('',<FILE>);
+ close FILE
+ or do { $errstr = "Can't close $file: $!"; return ''; };
+ ($self) = FreezeThaw::thaw($string);
+ }
+ }
+
+ unless ( $self ) {
+ $errstr = $@;