in reply to Curious about why some characters cause issues with mkdir/print

Perl operators that deal with paths suffer from The Unicode Bug. The path actually used is provided by the following sub:

sub path_actually_used { if (is_utf8($_[0]) { my $s = $_[0]; utf8::encode($s); return $s; } else { return $_[0]; } }

That means that if you have encoded bytes in an upgraded string, Perl will get it wrong.

my $s = chr(9734); mkdir($s); # ok utf8::encode($s); mkdir($s); # ok utf8::upgrade($s); mkdir($s); # not ok

It's virtually impossible to get into that situation without a bug in your code because the encoding functions always return a downgraded string.

You've already identified the solution: