use warnings; use strict; use open qw/:std :encoding(UTF-8)/; use Test::More tests=>1; use Data::Dump qw/pp/; use Encode qw/decode/; my $str = "Ren\\u00e9 \\ud83D\\uDe06\\uDb40\\udDeF Fran\\u00E7oise" ." \\\\u2660\\U1234"; $str =~ s{ (?| (?&U)(d[89ab][0-9a-f]{2}) (?&U)(d[c-f][0-9a-f]{2}) | (?&U)([0-9a-f]{4}) ) (?(DEFINE) (? (?-i) (?