Com um script Perl codificado por utf8, ele pode abrir um nome de arquivo codificado como GB2312?

Eu não estou falando sobre a leitura no conteúdo do arquivo em codificação utf-8 ou não-utf-8 e outras coisas. É sobre nomes de arquivos. Geralmente eu salvo meu script Perl na codificação padrão do sistema, "GB2312" no meu caso e não terei problemas com arquivos abertos. Mas para fins de processamento, agora estou tendo alguns arquivos de script Perl salvos na codificação utf-8. O problema é: esses scripts não podem abrir os arquivos cujos nomes consistem em caracteres codificados na codificação "GB2312" e não gosto da idéia de ter que renomear meus arquivos.

Alguém tem alguma experiência em lidar com esse tipo de situação? Obrigado como sempre por qualquer orientação.

Editar

Aqui está o código minimizado para demonstrar meu problema:

# I'm running ActivePerl 5.10.1 on Windows XP (Simplified Chinese version)
# The file system is NTFS

#!perl -w
use autodie;

my $file = "./测试.txt"; #the file name consists of two Chinese characters
open my $in,'<',"$file";

while (<$in>){
print;
}

Esse script de teste pode funcionar bem se salvo na codificação "ANSI" (suponho que a codificação ANSI seja a mesma que GB2312, que é usada para exibir caracteres chineses). Mas não funcionará se salvo como "UTF-8" e a mensagem de erro é a seguinte:

Can't open './娴嬭瘯.txt' for reading: 'No such file or directory'.

Nesta mensagem de aviso, "娴 嬭 瘯" são caracteres inúteis sem sentido.

Atualizar

Eu tentei primeiro codificar o nome do arquivo como GB2312, mas parece que não funciona :( Aqui está o que eu tentei:

#!perl -w
use autodie;
use Encode;

my $file = "./测试.txt";
encode("gb2312", decode("utf-8", $file));
open my $in,'<',"$file";

while (<$in>){
print;
}

Meu pensamento atual é: o nome do arquivo no meu sistema operacional é 测试 .txt, mas é codificado como GB2312. No script Perl, o nome do arquivo parece o mesmo para os olhos humanos, ainda 测试 .txt. Mas para Perl, eles são diferentes porque têm diferentes representações internas. Mas eu não entendo porque o problema persiste quando eu já converti meu nome de arquivo em Perl para GB2312 como mostrado no código acima.

Atualizar

Eu fiz isso, finalmente fiz isso :)

A sugestão de @ brian está certa. Eu cometi um erro no código acima. Eu não dei o nome do arquivo codificado de volta ao arquivo $.

Aqui está a solução:

#!perl -w
use autodie;
use Encode;

my $file = "./测试.txt";
$file = encode("gb2312", decode("utf-8", $file));
open my $in,'<',"$file";

while (<$in>){
print;
}

questionAnswers(1)

yourAnswerToTheQuestion