sub foo { open F, ... or die [ -1, "error opening file" ]; return $result; } my $string; eval { $string = foo(); }; if ( $@ ) { ( my $code, $string ) = $@; ... }