Sou novato em Perl mas o Garu e o Blabos me mostraram um esquema bacana do perl de rodar um mesmo comando para cada linha do arquivo.
Acho que substituiria seu while e ficaria interessante usar isso combinando com regex. Nao lembro o esquema, mas da pra pesquisar por algo enquanto outra pessoa nao responde. Leo Balter - via mobile Em 27/01/2013, às 22:35, Aureliano Guedes <[email protected]> escreveu: > 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 > > _______________________________________________ > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm
_______________________________________________ Rio-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/rio-pm
