From ptfzs em yahoo.com.br Tue Jan 9 09:05:35 2007 From: ptfzs em yahoo.com.br (Patty Silva) Date: Tue, 9 Jan 2007 09:05:35 -0800 (PST) Subject: [PortoAlegre-pm] use Template Message-ID: <20070109170535.28403.qmail@web31314.mail.mud.yahoo.com> Ola Pessoal.. estou usando o Template porem nao estou conseguindo fazer a gravacao em diversos arquivo ele so grava no 1 arquivo.. meu codigo resumido.....: Eu leio de um diretorio diversos arquivos e se dentro do arquivo possuir erro ele me gera um LOG .... #!/usr/bin/perl use Template; ................. opendir (DIR, $basedir) or die "Problemas ao abrir diretorio: $!"; while (my $file = readdir(DIR)) { next if $file eq '.' or $file eq '..'; chdir($dir) || die "\n *** Erro no diretorio $dir ***"; $file=~ /(\d\d\d\d\d\d)/; $arquivo_saida="$".".log_error"; open(FH, "<$file") or die("Nao pode acessar o arquivo"); while() { ..................................................... if($bla eq 'erro') { push @erros, { var => $nome,data => $data} } } unlink($file); chdir($dirlog); $tamanho = @erros; my $data_ref = { erros => \@erros, }; my $t = Template->new; $t->process(\*DATA,$data_ref,$arquivo_saida); } ----------------------------------------------------------------------------------------------------------- close(FH); closedir(DIR); $dbh->disconnect(); dbmclose %DBM; __DATA__ ERRO [% FOREACH id = erros %] --------------------------------------------------------------------------------- Variavel: [%nome%] Data: [% data %] --------------------------------------------------------------------------------- [% END %] Quando tem diversos arquivos ele gera so do 1 e da o seguinte erro nos outros: Use of uninitialized value in substr at /usr/lib/perl5/site_perl/5.8.8/i586-linux-thread-multi/Template/Provider.pm line 1044, chunk 1. Alguem pode dizer o que pode ser?? Obrigada __________________________________________________ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/portoalegre-pm/attachments/20070109/6abf50d7/attachment.html From msb.utils em gmail.com Wed Jan 10 03:37:53 2007 From: msb.utils em gmail.com (Mauricio Utils) Date: Wed, 10 Jan 2007 09:37:53 -0200 Subject: [PortoAlegre-pm] use Template In-Reply-To: <20070109170535.28403.qmail@web31314.mail.mud.yahoo.com> References: <20070109170535.28403.qmail@web31314.mail.mud.yahoo.com> Message-ID: <60ba62f00701100337p3d545b0m3cff5d44feb76230@mail.gmail.com> Oi, patty. Tem certeza que o problema está relacionado a ter mais de um arquivo de erros, e não ao conteúdo deles? Nem imagino qual seja o problema, pois nunca trabalhei com Templates, mas posso de tar uma dica de abordagem para identificar o problema: Se para o 1o arquivo funciona, tenta colocar no mesmo diretorio somente ele, com duas cópias. Ou seja, se o arquivo 020107 é o 1o com erro, e o teu código funciona com ele, cria um diretório vazio para testar, coloca uma cópia dele com o nome original neste diretório, e outra cópia com o nome de 020108 por exemplo. Se funcionar com as duas cópias o teu problema é em relação ao conteúdo dos arquivos (ou forma de lidar com eles). Se não funcionar, teu problema é outro que não tenho idéia... ;-) Espero ter ajudado. Abraço, Mauricio On 1/9/07, Patty Silva wrote: > > Ola Pessoal.. estou usando o Template porem nao estou conseguindo fazer a > gravacao em diversos arquivo ele so grava no 1 arquivo.. > > meu codigo resumido.....: > Eu leio de um diretorio diversos arquivos e se dentro do arquivo possuir > erro ele me gera um LOG .... > > #!/usr/bin/perl > > > use Template; > ................. > opendir (DIR, $basedir) or die "Problemas ao abrir diretorio: $!"; > > while (my $file = readdir(DIR)) > { > next if $file eq '.' or $file eq '..'; > > chdir($dir) || die "\n *** Erro no diretorio $dir ***"; > > $file=~ /(\d\d\d\d\d\d)/; > $arquivo_saida="$".".log_error"; > > > open(FH, "<$file") or die("Nao pode acessar o arquivo"); > > while() > { ..................................................... > > if($bla eq 'erro') > { > push @erros, { var => $nome,data => $data} > } > > > > } > > unlink($file); > > chdir($dirlog); > > $tamanho = @erros; > > my $data_ref = { > erros => \@erros, > }; > > my $t = Template->new; > > $t->process(\*DATA,$data_ref,$arquivo_saida); > > > > } > > > ----------------------------------------------------------------------------------------------------------- > close(FH); > closedir(DIR); > > $dbh->disconnect(); > > dbmclose %DBM; > > > __DATA__ > > ERRO > [% FOREACH id = erros %] > > --------------------------------------------------------------------------------- > Variavel: [%nome%] Data: [% data %] > > --------------------------------------------------------------------------------- > [% END %] > > > > Quando tem diversos arquivos ele gera so do 1 e da o seguinte erro nos > outros: > > Use of uninitialized value in substr at /usr/lib/perl5/site_perl/5.8.8/i586-linux-thread-multi/Template/Provider.pm > line 1044, chunk 1. > > > > Alguem pode dizer o que pode ser?? > > > Obrigada > > __________________________________________________ > Fale com seus amigos de graça com o novo Yahoo! Messenger > http://br.messenger.yahoo.com/ > > _______________________________________________ > 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/20070110/0abfa6b2/attachment.html From ptfzs em yahoo.com.br Fri Jan 12 07:45:49 2007 From: ptfzs em yahoo.com.br (Patty Silva) Date: Fri, 12 Jan 2007 07:45:49 -0800 (PST) Subject: [PortoAlegre-pm] Duvida Fetchrow_Array Message-ID: <739325.94529.qm@web31305.mail.mud.yahoo.com> Ola Pessoal, Tudo Bem? Meu algoritmo é mais ou menos assim: busca no BD NOME,ERROR (1hora antes) IF ERRO=4 ENTAO busca no BD NOME,ERROR (2hora antes) IF ERROR =2 ENTAO busca no BD NOME,ERROR (3hora antes) IF ERROR=1 THEN ERRO=OK INSERI nO BANCO ENDIF ENDIF ENDIF Estou usando o while(($nome,$error)= $sth->fetchrow_array) para recuperar as variaveos minha duvida eh:? Posso usar varios $sth->fetchrow_array?? Pois estou recebendo o erro: DBD::mysql::st fetchrow_array failed: fetch() without execute() Como posso fazer varias consultas no Banco... ?\/\/\/? Obrigada Pessoal... __________________________________________________ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/portoalegre-pm/attachments/20070112/b2dd6e0e/attachment.html From a.r.ferreira em gmail.com Fri Jan 12 07:58:09 2007 From: a.r.ferreira em gmail.com (Adriano Ferreira) Date: Fri, 12 Jan 2007 13:58:09 -0200 Subject: [PortoAlegre-pm] Duvida Fetchrow_Array In-Reply-To: <739325.94529.qm@web31305.mail.mud.yahoo.com> References: <739325.94529.qm@web31305.mail.mud.yahoo.com> Message-ID: <73ddeb6c0701120758k3a835961r637847884d0244fd@mail.gmail.com> Oi, Patty. Na hora de usar um 'statement' de consulta, o padrão comum de uso é $sth = $dbh->prepare($sql); $sth->execute(@params); while (my @row = $sth->fetchrow_array) { # faça o que tem de fazer com cada linha da consulta } como explicado aqui nesta seção da documentação da DBI: http://search.cpan.org/~timb/DBI-1.53/DBI.pm#Outline_Usage O erro que você recebeu é típico quando o "execute" não foi invocado entre o "prepare" e o "fetch". On 1/12/07, Patty Silva wrote: > > Ola Pessoal, Tudo Bem? > > Meu algoritmo é mais ou menos assim: > > busca no BD NOME,ERROR (1hora antes) > IF ERRO=4 > ENTAO > busca no BD NOME,ERROR (2hora antes) > IF ERROR =2 > ENTAO > busca no BD NOME,ERROR (3hora antes) > IF ERROR=1 > THEN > ERRO=OK > INSERI nO BANCO > ENDIF > ENDIF > ENDIF > > > Estou usando o while(($nome,$error)= $sth->fetchrow_array) para recuperar as > variaveos > minha duvida eh:? > > Posso usar varios $sth->fetchrow_array?? > > Pois estou recebendo o erro: > > DBD::mysql::st fetchrow_array failed: fetch() without execute() > > > > Como posso fazer varias consultas no Banco... ?\/\/\/? > > > > Obrigada Pessoal... > > > > > __________________________________________________ > Fale com seus amigos de graça com o novo Yahoo! Messenger > http://br.messenger.yahoo.com/ > _______________________________________________ > PortoAlegre-pm mailing list > PortoAlegre-pm em pm.org > http://mail.pm.org/mailman/listinfo/portoalegre-pm > > From perl em atechs.com.br Fri Jan 12 15:48:28 2007 From: perl em atechs.com.br (Vinicius Alves) Date: Fri, 12 Jan 2007 21:48:28 -0200 Subject: [PortoAlegre-pm] Duvida Fetchrow_Array References: <739325.94529.qm@web31305.mail.mud.yahoo.com> Message-ID: <003601c736a4$289490f0$0200a8c0@alpha> Pela mensagem de erro, o problema está bem claro. Antes de rodar o fetchrow, vc tem que executar a query: $sth->execute(); Vinicius ----- Original Message ----- From: Patty Silva To: Cascavel Perl Mongers ; Lista-PortoAlegre Sent: Friday, January 12, 2007 1:45 PM Subject: [PortoAlegre-pm] Duvida Fetchrow_Array Ola Pessoal, Tudo Bem? Meu algoritmo é mais ou menos assim: busca no BD NOME,ERROR (1hora antes) IF ERRO=4 ENTAO busca no BD NOME,ERROR (2hora antes) IF ERROR =2 ENTAO busca no BD NOME,ERROR (3hora antes) IF ERROR=1 THEN ERRO=OK INSERI nO BANCO ENDIF ENDIF ENDIF Estou usando o while(($nome,$error)= $sth->fetchrow_array) para recuperar as variaveos minha duvida eh:? Posso usar varios $sth->fetchrow_array?? Pois estou recebendo o erro: DBD::mysql::st fetchrow_array failed: fetch() without execute() Como posso fazer varias consultas no Banco... ?\/\/\/? Obrigada Pessoal... __________________________________________________ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ ------------------------------------------------------------------------------ _______________________________________________ PortoAlegre-pm mailing list PortoAlegre-pm em pm.org http://mail.pm.org/mailman/listinfo/portoalegre-pm -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/portoalegre-pm/attachments/20070112/dbf30948/attachment.html From ptfzs em yahoo.com.br Tue Jan 23 09:16:15 2007 From: ptfzs em yahoo.com.br (Patty Silva) Date: Tue, 23 Jan 2007 09:16:15 -0800 (PST) Subject: [PortoAlegre-pm] Duvida Split Message-ID: <660751.53236.qm@web31303.mail.mud.yahoo.com> Ola Pessoal... Fiz um script para ler arquivos em formato CSV porem quando faco o FOREACH ele faz a quantidade de variaveis exeistente entre as virgulas script: opendir (DIR, $caminho) or die "Problemas ao abrir diretorio: $!"; while (my $file = readdir(DIR)) { next if $file eq '.' or $file eq '..'; chdir($caminho) || die "\n *** Erro no diretorio $caminho ***"; open(FH, "<$file") or die("Arquivo nao pode ser acessado"); while ( $linha= ) { @valor=split(/,/,$linha); foreach $campo (@valor) { chomp(@valor); $var = $valor[0]; $var2 = $valor[1]; $var3= $valor[2]; $var4 = $valor[3]; print " VAR: $var\n\n"; <------------ QUANDO MANDO IMPRIMIR isso ele IMPRIME 4 VEZES ou seja a quantidade de variaves entre , } } } Como faco???????? :) Obrigada Pessoal...... []ssssss __________________________________________________ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/portoalegre-pm/attachments/20070123/902a3818/attachment.html From ptfzs em yahoo.com.br Tue Jan 23 09:22:35 2007 From: ptfzs em yahoo.com.br (Patty Silva) Date: Tue, 23 Jan 2007 09:22:35 -0800 (PST) Subject: [PortoAlegre-pm] Res: Duvida Split Message-ID: <86205.98464.qm@web31310.mail.mud.yahoo.com> Pessoal eu retirei o FOREACH e funcionou... :P ----- Mensagem original ---- De: Patty Silva Para: Cascavel Perl Mongers ; Lista-PortoAlegre Enviadas: Terça-feira, 23 de Janeiro de 2007 17:16:15 Assunto: [PortoAlegre-pm] Duvida Split Ola Pessoal... Fiz um script para ler arquivos em formato CSV porem quando faco o FOREACH ele faz a quantidade de variaveis exeistente entre as virgulas script: opendir (DIR, $caminho) or die "Problemas ao abrir diretorio: $!"; while (my $file = readdir(DIR)) { next if $file eq '.' or $file eq '..'; chdir($caminho) || die "\n *** Erro no diretorio $caminho ***"; open(FH, "<$file") or die("Arquivo nao pode ser acessado"); while ( $linha= ) { @valor=split(/,/,$linha); foreach $campo (@valor) { chomp(@valor); $var = $valor[0]; $var2 = $valor[1]; $var3= $valor[2]; $var4 = $valor[3]; print " VAR: $var\n\n"; <------------ QUANDO MANDO IMPRIMIR isso ele IMPRIME 4 VEZES ou seja a quantidade de variaves entre , } } } Como faco???????? :) Obrigada Pessoal...... []ssssss __________________________________________________ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ _______________________________________________ PortoAlegre-pm mailing list PortoAlegre-pm em pm.org http://mail.pm.org/mailman/listinfo/portoalegre-pm __________________________________________________ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/portoalegre-pm/attachments/20070123/5433c0e8/attachment.html