[Rio-pm] Problema com formatos

Aureliano Guedes guedes_1000 em hotmail.com
Domingo Janeiro 27 16:35:40 PST 2013


Ola monges,

Estou com uma pasta cheia de arquivos *.psd e um txt usado para modificar o nome dos arquivos.

O txt esta da seguinte forma:
001#nome_do_arquivo_001
002#nome_do_arquivo_002
003#nome_do_arquivo_003
....

E os arquivos nomeados da seguinte forma:
nome_do_arquivo_001.psd
nome_do_arquivo_002.psd
nome_do_arquivo_003.psd
...

O objetivo era renomear os arquivos com base no txt, onde o "nome_do_arquivo" fosse substituido pelo numero antes do #.
Algo como :
#!/usr/bin/env perl

use common::sense;
use autodie;

my @list = <*>;
@list = glob("*.psd");

open my $in, "<", "nome_do_arquivo.txt";

while (my $line = <$in>){
    $line = ~/(.+)#´(.+)/;
    my $s1 = $1;
    my $s2 = $2;
    
    foreach my $i (@list){
        if ($i =~ /.*´$s2/){
            say "$_: $s2 -> $s1\n";
            rename $_, $s1;
        }
    }
}

Ou algo parecido.

O problema é que que o txt esta gb18030 (Chinês Tradicional) e o Perl trabalhando com o charset padrão os bytes são passados sem modificação nenhuma.
O sistema consegue converter o nome dos arquivos *.psd e o conteudo do txt para iso-8859-1. Dessa forma a leitura fica assim:
501#°ËÀº»ÔÅ׾Ȱæ#Em contrapartida se convertido diretamente para utf8 ficaria:
501#八篮辉抛救版#Mas eu creio que o Perl não esteja interpretando o texto original como gb18030 e sim como outro formato e tentando converter para utf8.

Portanto não da certo tentar renomear nem mesmo tentar ler o arquivo txt.

Alguem tem alguma sugestão de como resolver este problema???

Desde já grato.

Att,
Aureliano Guedes

 		 	   		  
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20130128/07054a81/attachment-0001.html>


Mais detalhes sobre a lista de discussão Rio-pm