L'uscita del seguente esempio minimale mostra che (sulla mia macchina linux) File :: Glob sembra avere l'inaspettato effetto collaterale di conversione di una stringa utf8 per non utf8:Il file :: Glob di perl deve essere sempre post-filtrato tramite utf8 :: decode?
#!/usr/bin/perl
use utf8;
use strict;
my $x = "påminnelser";
my $y = glob $x;
print "x=",utf8::is_utf8($x),"=\n";
print "y=",utf8::is_utf8($y),"=\n";
Questo sta causando sbagliato comportamento nel mio programma. Su Linux, sembra che posso risolvere il problema applicando utf8 :: decode() dopo File :: Glob. È questo il modo giusto per risolvere questo problema? Si tratta di un bug in File :: Glob? La mia correzione produrrà risultati corretti su altri sistemi come Windows?
Grazie per le informazioni utili, +1. Ma questo non risponde alla mia domanda, ovvero se la mia soluzione fosse corretta e/o consigliabile. Non voglio dire arbitrariamente ai miei utenti che non possono avere nomi di file non ASCII. –
È consigliabile che tutti gli utenti utilizzino utf8 come codifica per i nomi di file. Se hai utenti che hanno, ad esempio, no_NO.ISO8859-1 come loro locale e creano nomi di file in base a questa locale, allora non funzionerà. In questo caso hai iniziato a indovinare, magari usando 'Encode :: Guess' o moduli simili. –
Vedo. Quindi penso che la risposta alla mia domanda sia che la mia soluzione proposta è una cattiva idea ed è probabile che sia danneggiata per alcuni utenti. +1 –