# Assuming $string is utf-8 endcoded: if ( my @badch = ( $string =~ /[\x{d800}-\x{dfff}]/g )) { warn sprintf( "%d surrogate code point(s) found\n", scalar @badch ); $string =~ tr/\x{d800}-\x{dfff}//d; }