[PortoAlegre-pm] Concatenar arquivos

Mauricio Utils msb.utils em gmail.com
Sexta Julho 14 19:24:42 PDT 2006


Patty, para o teu 1o uso de hash ateh q funciona, mas tu estah usando o hash
de uma forma esquisita... hehehe. A tua solucao faz o que tu quer, mas o teu
codigo poderia ser melhorado um pouco. Tu pode setar 1 no hash direto no
while, eliminando assim totalmente a necessidade do @arquivos, e do primeiro
foreach. Sacou? ^_^
Quanto a apagar os arquivos passando o nome deles para o unlink, a moral eh
tu armazenar informacoes uteis (os nomes dos arquivos) no hash, ao inves de
um mero '1', ou seja, um array. Dah uma lida em:

perldoc perldsc

em especial na secao "HASHES OF ARRAYS", embora dar uma lida no documento
como um todo soh vai te trazer beneficios ;-) Mas nao se assusta com o que
tu nao entender. Eh importante ter em mente que o conhecimento sempre eh
absorvido em partes, e nao tudo de uma vez. hehehehe :)

Faz uns testes, altera teu codigo, vai fazendo as coisas aos poucos. ;-)
Depois que tu tiver conseguido armazenar os nomes dos arquivos, e remover
eles, quando tu observar o programa um pouco melhor para ver o que pode ser
melhorado tu vai ver que a melhor solucao na verdade vai ter quase o mesmo
numero de linhas que antes de tu armazenar os nomes dos arquivos. Se nao,
manda aih as tuas evolucoes que eu te digo como melhorar. ^_^

Boa sorte. Sei que tu nao vai nos decepcionar. ;-)

Abraco,
   Mauricio

On 7/14/06, Patty Silva <ptfzs at yahoo.com.br> wrote:
>
>
> Mauricio..
> Fiz assim: e funcionou.. porem nao sei se eh a melhor forma:
>
> <CODE>
>
> --------------------------------------------------------------------------------------------------------------------------------
> #!/usr/bin/perl
> #
> my $caminho= "$ENV{HOME}/perl";
>
>
> chdir ($caminho) || die "\n *** Erro no diretorio $caminho ***";
>
> while ($arquivo = <*.txt>)
> {
>
>             $arquivo=~ /(\d\d\d\d\d\d\d\d\d\d)/;
>             $arquivo=$1;
>             push(@arquivos,$arquivo);
>
> }
>
> my %hash;
> foreach (@arquivos)
> {
>   $hash{$_} = 1;
> }
> foreach (sort keys %hash)
> {
>   print "$_\n";
>   `cat $_* >$_.txt`;
> }
>
>
> --------------------------------------------------------------------------------------------------------------------------------
>
>
> E outra coisa.. queria apagar os arquivos permanecendo somente o que eu
> concatenei.. :)
>
>
> Obrigada pessoal
>
>
>
>
>
> *Mauricio Utils <msb.utils at gmail.com>* escreveu:
>
> Tu pode criar um hash cuja chave seja o ANOMESDIA e o valor seja um array
> com os nomes dos arquivos.
> No laço, tu separa com split('_', $arquivo) onde o primeiro valor
> retornado eh o ANOMESDIA, que tu vai usar como chave no hash.
> Depois de preenchido o hash, tu faz outro laço iterando as chaves do hash
> e chamando o teu comando. que tal? ;-)
>
>    Mauricio
>
> On 7/13/06, Patty Silva <ptfzs at yahoo.com.br> wrote:
> >
> > Ola Pessoal..
> > Eu again! :)
> >
> > Fiz um script para concatenar arquivo de um diretorio:
> >
> > <CODIGO>
> >
> > ---------------------------------------------------------------------------------------------
> > my $caminho= "$ENV{HOME}/teste";
> >
> > chdir ($caminho) || die "\n *** Erro no diretorio $caminho ***";
> >
> > while ($arquivo = <*.txt>)
> > {
> >
> >   $InFile= $caminho.$arquivo;
> >
> >   push(@arquivos,$arquivo);
> >
> > }
> >
> > system(`cat @arquivos>>$data_out.tmp`);
> > unlink(@arquivos);
> >
> > ---------------------------------------------------------------------------------------------
> >
> >
> > Porem quero concatenar arquivos com a msm data ou seja,
> > os nomes dos arquivos sao ANOMESDIAHORA_tipo.txt
> > Quero concatenar arquivos com ANOMESDIAHORA iguais.. e gerar somente um
> > ANOMESDIA.txt
> >
> > Se alguem puder me dar uma lUz :)
> >
> > Obrigada
> >
> >
> >
> > ------------------------------
> > Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu
> > celular. Registre seu aparelho agora!<http://us.rd.yahoo.com/mail/br/tagline/mobile_alerts/*http://br.mobile.yahoo.com/mailalertas/>
> >
> > _______________________________________________
> > PortoAlegre-pm mailing list
> > PortoAlegre-pm at pm.org
> > http://mail.pm.org/mailman/listinfo/portoalegre-pm
> >
> >
> _______________________________________________
> PortoAlegre-pm mailing list
> PortoAlegre-pm at pm.org
> http://mail.pm.org/mailman/listinfo/portoalegre-pm
>
>
> ------------------------------
> Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular.
> Registre seu aparelho agora!<http://us.rd.yahoo.com/mail/br/tagline/mobile_alerts/*http://br.mobile.yahoo.com/mailalertas/>
>
>
> _______________________________________________
> PortoAlegre-pm mailing list
> PortoAlegre-pm at pm.org
> http://mail.pm.org/mailman/listinfo/portoalegre-pm
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.pm.org/pipermail/portoalegre-pm/attachments/20060714/18bc7409/attachment-0001.html 


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