Como posso converter um arquivo de entrada para codificação UTF-8 em Perl?

Eu já sei como converter o conteúdo codificado não-utf8 de um arquivo linha por linha para a codificação UTF-8, usando algo como o seguinte código:

# outfile.txt is in GB-2312 encode    
open my $filter,"<",'c:/outfile.txt'; 

while(<$filter>){
#convert each line of outfile.txt to UTF-8 encoding   
    $_ = Encode::decode("gb2312", $_); 
...}

Mas eu acho que o Perl pode codificar diretamente todo o arquivo de entrada para o formato UTF-8, então eu tentei algo como

#outfile.txt is in GB-2312 encode
open my $filter,"<:utf8",'c:/outfile.txt'; 

(Perl diz algo como "utf8" \ xD4 "não mapeia para Unicode")

e

open my $filter,"<",'c:/outfile.txt'; 
$filter = Encode::decode("gb2312", $filter); 

(Perl diz "readline () no filehandle não aberto!)

Eles não funcionam. Mas existe alguma maneira de converter diretamente o arquivo de entrada para codificar UTF-8?

Atualizar:

Parece que as coisas não são tão simples quanto eu pensava. Agora posso converter o arquivo de entrada em código UTF-8 de forma indireta. Primeiro, abro o arquivo de entrada e, em seguida, codifico o conteúdo dele para UTF-8 e, em seguida, imprimo em um novo arquivo e, em seguida, abro o novo arquivo para processamento adicional. Este é o código:

open my $filter,'<:encoding(gb2312)','c:/outfile.txt'; 
open my $filter_new, '+>:utf8', 'c:/outfile_new.txt'; 
print $filter_new $_ while <$filter>; 
while (<$filter_new>){
...
} 

Mas isso é muito trabalho e é ainda mais problemático do que simplesmente codificar o conteúdo do filtro linha por linha.

questionAnswers(2)

yourAnswerToTheQuestion