in reply to Utf-8 path from file

You forgot to chomp. If, as 1st line in a while block, there's chomp $line;, then you are OK. +You'd better die $^E instead of just die.

OTOH (digressing, I know), if instead of code after the "#1" line you do

use Win32::LongPath; testL 'e', $UserDataReadFromFile or mkdirL $UserDataReadFromFile or die $^E;

there's no need in chomping, previously. It may look as a nice free bonus, but it's misleading. See 5 lines, comment says "strip off volume", but effectively it strips newline too, because a dot doesn't match newline there. There can be ways to bypass that fragment, therefore unaware user will be bitten. Thus, always chomp.