Имена файлов везде должны быть байтовыми строками (не юникодом). Эти имена системо-зависимы, поэтому автоматически и кроссплатформенно не получится - на каждой системе на каждом томе может быть своя кодировка..
Ваще на уровне winapi все очень плохо с utf8, они рекомендуют юзать функции *W, которые дефакто работают с utf-16 (в винде в отличее от nix wchar_t == char16_t)/ На уровне перла надо вообще посмотреть что вызыввается под капотом