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 $@;