Encode::FB_CROAK
$buffer = Encode::decode_utf8($buffer); $buffer =~ s{ $PATTERN }{}xmsg;
なコードの正規表現置換箇所で "Malformed UTF-8 character (fatal)" なエラーで落ちる。ここで失敗しても他の処理は続けてほしいから eval で囲うことにする。でもって、utf8 としてデコードしようとしておかしなバイト列に遭遇したのであれば、その時点で die してくれた方が嬉しいかもしれない。そんな場合には Encode の CHECK 引数をつけるのがよさげ。(Encode - character encodings in Perl - metacpan.org)
eval { $buffer = Encode::decode_utf8($buffer, Encode::FB_CROAK); $buffer =~ s{ $PATTERN }{}xmsg; }; $buffer = q{} if $@;