На самом деле это работает.
use open ':std', ':encoding(UTF-8)';
my $s = "\N{U+1D43B}\N{U+2082}\N{U+1D442}";
say sprintf "%vX", $s;
$s =~ y/\x{1d434}-\x{1d467}/A-Za-z/;
say sprintf "%1\$vX %1\$s", $s;
Вывод:
1D43B.2082.1D442
48.2082.4F H₂O
Возможно, у вас на самом деле нет трехсимвольной строки, которую вы описываете? Возможно, у вас есть текст, закодированный с использованием UTF-8?