Это просто потому, что традиционные системные вызовы Unix, которые использует или эмулирует Perl, определяются в байтах, а не в символах. Если вы хотите, чтобы UTF-8 кодировал или декодировал имя файла, то вы должны сделать это для себя. Вы не получите то, что хотите, если не получите.