Wow !! I can’t believe that no one answered this. This is a superfood big question. You, too, were all right. I like that you use Unicode :: Collate :: Locale and Unicode :: GCString. Good for you!
The reason you get the "wrong" output is because you are not using the Unicode :: GCString class method columnsto determine the print width of the material you are printing.
printf , , , GCS. , , , :
printf "%-10.10s", $gstring;
:
$colwidth = $gcstring->columns();
if ($colwidth > 10) {
print $gcstring->substr(0,10);
} else {
print " " x (10 - $colwidth);
print $gcstring;
}
, ?
. . . UCA , . , , , , normalization => undef, gmatch .