Problem jest z SET NAMES utf8
Komenda. W MySQL zestaw znaków utf8 nie jest tak naprawdę utf8, to obsługuje tylko znaki do 3 bajtów
a dany znak ma 4 bajty:
Prawdziwy utf8 to utf8mb4, którego używasz jako zestawu znaków w samym polu. Użyj więc SET NAMES utf8mb4
Więc z Perla powinieneś użyć {mysql_enable_utf8mb4 => 1}
zamiast {mysql_enable_utf8 => 1}
.