Ismail Dönmez [off-list ref] writes:
Monday 03 December 2007 Tarihinde 12:14:43 yazmıştı:
quoted
Benjamin Close [off-list ref] writes:
quoted
quoted
- eval { $res = decode_utf8($str, Encode::FB_CROAK); };
- if (defined $res) {
- return $res;
- } else {
- return decode($fallback_encoding, $str, Encode::FB_DEFAULT);
- }
+ eval { return ($res = decode_utf8($str, Encode::FB_CROAK)); };
+ return decode($fallback_encoding, $str, Encode::FB_DEFAULT);
}
I thought the standard catch ... throw idiom in Perl was to do the above
like this:
my $res;
eval { $res = decode_utf8($str, Encode::FB_CROAK); };
if ($@) {
return decode($fallback_encoding, $str, Encode::FB_DEFAULT);
}
return $res;
I think this is correct, but the current code in gitweb doesn't look correct
since it checks for $res and not $@.
First version of the patch was created by Martin Koegler. I have
participated in creating the version which is now in gitweb, but I
have to say that I wrote it based on decode_utf8
documentation... which doesn't necessarily agree with facts :-(
I'm all for the "throw idion" version. Ack.
--
Jakub Narebski