Leo, acho que vc está se referindo a: perl -lne "..." arquivo.txt
=) Sim sim, isso certamente ajudaria no processo, mas acho que a dúvida do Aureliano está um pouco antes ainda, em como fazer o perl decodificar o conteúdo do texto em chinês. Aliás, uma curiosidade: esse tipo de oneliner para renomear arquivos baseados em regex (tá, não exatamente esse tipo pq não envolve ler conteúdo, mas a idéia é a mesma) ficou tão popular que gerou um programa à parte, o "rename" da linha de comando: rename 's/regex_no_nome_antigo/valor_novo/' foo* []s -b 2013/1/28 Leo Balter <[email protected]>: > 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 _______________________________________________ Rio-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/rio-pm
