O problema é com o
SET NAMES utf8
comando. No MySQL, o conjunto de caracteres utf8 não é verdadeiramente utf8, é suporta caracteres de até 3 bytes apenas
e o caractere em questão tem 4 bytes:O verdadeiro utf8 é o utf8mb4 que você usa como conjunto de caracteres no próprio campo. Então, use
SET NAMES utf8mb4
Então do Perl você deve usar
{mysql_enable_utf8mb4 => 1}
em vez de {mysql_enable_utf8 => 1}
.