hallo
Der Fall hier
if( $file =~ /\.(?:$filetypes)$/ && -f $file && -r $file ){ $list.= encode_utf8( sprintf(qq{<option value="%s/%s">%s/%s (%s)</option>\n}, $f, $_, $f, $_ , ( -w $file ? '+r+w' : '+r') ) ); }
encode_utf8 funkioniert auf meinem win8.1 zufälligerweise.
Beachte, daß bei allen Strings die ans OS bzw. nach draußen gehen, also Dateinamen und Inhalte, die interne Zeichenkodierung abgeschaltet werden muss. encode_utf8()
ist also falsch angebracht in diesem Kontext.
MfG