<br>Oi Patty,<br><br>Primeirissima coisa:<br><br>use strict;<br>
use warnings;<br>
<br>
use strict;<br>
use warnings;<br>
<br>
use strict;<br>
use warnings;<br>
<br>
use strict;<br>
use warnings;<br>
<br>
use strict;<br>
use warnings;<br>
<br>
use strict;<br>
use warnings;<br>
<br>
use strict;<br>
use warnings;<br>
<br>
use strict;<br>
use warnings;<br>
<br>
use strict;<br>
use warnings;<br><br>
use strict;<br>
use warnings;<br>
<br>
<span class="gmail_quote"></span>use strict;<br>
use warnings;<br>
<br>Agora continuando...<br>
<span class="gmail_quote"></span><br>
<span class="gmail_quote"></span><div><span class="gmail_quote">Em 09/01/07, <b class="gmail_sendername">Patty Silva</b> <<a href="mailto:ptfzs@yahoo.com.br">ptfzs@yahoo.com.br</a>> escreveu:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><div>Ola Pessoal.. estou usando o Template porem nao estou conseguindo fazer a gravacao em diversos arquivo ele so grava no 1 arquivo..
<br><br>meu codigo resumido.....:<br>Eu leio de um diretorio diversos arquivos e se dentro do arquivo possuir erro ele me gera um LOG ....<br><br>#!/usr/bin/perl<br><br><br>use Template;<br>.................<br>opendir (DIR, $basedir) or die "Problemas ao abrir diretorio: $!";
<br><br>while (my $file = readdir(DIR)) <br>{<br> next if $file eq '.' or $file eq '..';<br> <br> chdir($dir) || die "\n *** Erro no diretorio $dir ***";<br> <br> $file=~ /(\d\d\d\d\d\d)/;
</div></div></div></blockquote><div><br>Aqui tá errado, não seria $1?<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">
<div> $arquivo_saida="$".".log_error";</div></div></div></blockquote><div><br>Use o formato de open com três parâmetros, e de preferência com variáveis escalares (Hrm... Acho que isto já foi dito uma vez...). Ah! Claro! Perl não é telepata! Você tem que pedir para ele te dizer por que não abriu o arquivo (Variável $!):
<br><br>open my $fh, "<", $file or die "Nao pode acessar o arquivo: $!";<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><div> open(FH,
"<$file") or die("Nao pode acessar o arquivo");<br><br> while(<FH>)<br> { .....................................................</div></div></div></blockquote><div><br>$bla não é nome de variável.
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">
<div> if($bla eq 'erro')<br> {</div></div></div></blockquote><div><br>Ponto e vírgula! Sempre! Mesmo que seja o último comando e o Perl não encha seu saco. Depois você coloca uma instrução abaixo desta linha e dá caca, aí você vem perguntar a razão.
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">
<div> push @erros, { var => $nome,data => $data}<br> }<br> <br> <br> <br> }</div></div></div></blockquote><div><br>unlink $file or warn "Não removi o arquivo: $!";
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">
<div>unlink($file);<br><br><span style="background-color: rgb(255, 255, 0);">chdir($dirlog);</span><br style="background-color: rgb(255, 255, 0);"><br style="background-color: rgb(255, 255, 0);"><span style="background-color: rgb(255, 255, 0);">
$tamanho = @erros;</span><br style="background-color: rgb(255, 255, 0);"><br style="background-color: rgb(255, 255, 0);"><span style="background-color: rgb(255, 255, 0);">my $data_ref = {</span><br style="background-color: rgb(255, 255, 0);">
<span style="background-color: rgb(255, 255, 0);"> erros => \@erros,</span><br style="background-color: rgb(255, 255, 0);"><span style="background-color: rgb(255, 255, 0);">};</span><br style="background-color: rgb(255, 255, 0);">
<br style="background-color: rgb(255, 255, 0);"><span style="background-color: rgb(255, 255, 0);">my $t = Template->new;</span></div></div></div></blockquote><div><br>Segundo perldoc Template:<br><br>$t->process(...) or die $template->error();
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">
<div><span style="background-color: rgb(255, 255, 0);">$t->process(\*DATA,$data_ref,$arquivo_saida) </span><br><br><br><br>}<br><br>-----------------------------------------------------------------------------------------------------------
<br>close(FH);<br>closedir(DIR);<br><br>$dbh->disconnect();<br><br>dbmclose %DBM;<br><br><br><span style="background-color: rgb(255, 255, 0);">__DATA__</span><br style="background-color: rgb(255, 255, 0);"><br style="background-color: rgb(255, 255, 0);">
<span style="background-color: rgb(255, 255, 0);">ERRO</span><br style="background-color: rgb(255, 255, 0);"><span style="background-color: rgb(255, 255, 0);">[% FOREACH id = erros %]</span><br style="background-color: rgb(255, 255, 0);">
<span style="background-color: rgb(255, 255, 0);">---------------------------------------------------------------------------------</span><br style="background-color: rgb(255, 255, 0);"><span style="background-color: rgb(255, 255, 0);">
Variavel: [%nome%] Data: [% data %] </span><br style="background-color: rgb(255, 255, 0);"><span style="background-color: rgb(255, 255, 0);">---------------------------------------------------------------------------------
</span><br style="background-color: rgb(255, 255, 0);"><span style="background-color: rgb(255, 255, 0);">[% END %]</span><br><br><font size="4"><br style="font-weight: bold;"><br style="font-weight: bold;"><span style="font-weight: bold;">
Quando tem diversos arquivos ele gera so do 1 e da o seguinte erro nos outros:</span><br style="font-weight: bold;"><br style="font-weight: bold;"><span style="font-weight: bold;">Use of uninitialized value in substr at <span style="background-color: rgb(191, 0, 95); color: rgb(255, 255, 191);">
/usr/lib/perl5/site_perl/5.8.8/i586-linux-thread-multi/Template/Provider.pm line 1044, <DATA> chunk 1.</span></span><br style="font-weight: bold;"><br style="font-weight: bold;"><br style="font-weight: bold;"><br style="font-weight: bold;">
<span style="font-weight: bold;">Alguem pode dizer o que pode ser??</span></font></div></div></div></blockquote><div><br>Adicionando strict e warnings no seu programa:<br><br>[igor@roy ~]$ perl -c patty.pl <br>Global symbol "$basedir" requires explicit package name at
patty.pl line 8.<br>Global symbol "$dir" requires explicit package name at patty.pl line 13.<br>Global symbol "$dir" requires explicit package name at patty.pl line 13.<br>Global symbol "$arquivo_saida" requires explicit package name at
patty.pl line 16.<br>Global symbol "$bla" requires explicit package name at patty.pl line 22.<br>Global symbol "@erros" requires explicit package name at patty.pl line 23.<br>Global symbol "$nome" requires explicit package name at
patty.pl line 23.<br>Global symbol "$data" requires explicit package name at patty.pl line 23.<br>Global symbol "$dirlog" requires explicit package name at patty.pl line 30.<br>Global symbol "$tamanho" requires explicit package name at
patty.pl line 32.<br>Global symbol "@erros" requires explicit package name at patty.pl line 32.<br>Global symbol "@erros" requires explicit package name at patty.pl line 34.<br>Global symbol "$arquivo_saida" requires explicit package name at
patty.pl line 38.<br>Global symbol "$dbh" requires explicit package name at patty.pl line 45.<br>Global symbol "%DBM" requires explicit package name at patty.pl line 47.<br>patty.pl had compilation errors.
<br><br>Ah! Isso quer dizer que os tracinhos sem importância que estavam no meio do seu código são linhas que não fazem diferença prá gente?<br><br>Posta o código completo, que pelo menos passe no teste do "perl -c" daí a gente continua a conversa.
<br></div><br>Antes que você me xingue denovo, eu acredito que você tenha condições de fazer a coisa certa e aprender, mas não é isso que parece estar acontecendo...<br><br></div>-- <br>Igor Sutton Lopes <<a href="mailto:igor.sutton@gmail.com">
igor.sutton@gmail.com</a>>