Seguem comentários:<br><br><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div>my %table = (<br> "Variavel 1" => "T1r",
<br> "Variavel 2" => "T2r",<br> "Variavel 3" => "T3r",<br>);<br><br><br>$dbh = DBI->connect("DBI:mysql:$DBName",$UserName, $password) || die("Erro de Conexao:$DBI:errstr") ;
<br><br>chdir ($caminho) || die "\n *** Erro no diretorio $caminho ***";<br><br>for(parse_dir(`ls -ltr`)) <br>{<br>($arquivo) = @$_;</div></blockquote><div><br>Eu modificaria este trecho de código:<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>open(FH, "<$arquivo") or die("Arquivo nao encontrado");<br>@table = <FH>;
<br>shift @table; # descarta primeira linha<br>close(FH);</div></blockquote><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div>foreach(@table)
<br>{</div></blockquote><div><br>para:<br> </div>open FH, "<", $arquivo or die "Problemas para abrir o arquivo $arquivo: $!";<br># Se o seu arquivo for muito grande, você não vai querer que ele<br># transforme todo o conteúdo em um graaaaaaaaaande array consumindo
<br># toda a memória. foreach() é utilizado em contexto de array, por isso este<br># comportamento.<br>while ($_ = <FH>) {<br> next unless $. > 1;<br><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div>if ($_ =~ /^\s*VARIAVEL/) <br>{<br> <br> if( (s#^\s*VARIAVEL-S##) or (s#^\s*VARIAVEL-B##) ) <br> {<br> <br> <br> <br> }<br>
else<br> {</div></blockquote><div><br>Este aqui também pode ser modificado: <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> (undef,$variavel,$nome,undef,undef,undef,undef,undef,$data_arquivo,undef,$valor,$var) = split /\s+/, $_;</div></blockquote><div><br>($nome, $data_arquivo, $valor, $var) = (split /\s+/)[1,2,8,10,11];<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> $data_arquivo =~ s/(\d\d\d\d)(\d\d)(\d\d)_(\d\d)(\d\d)/$1-$2-$3 $4:00/;<br>
<br> if (defined $table{$variavel}) <br> {<br> <br> $variavel = $table{$variavel};<br> <br> }</div></blockquote><div><br>Creio que esteja aqui a sua dúvida, e uma possível solução, pois não lembro se podemos utilizar placeholders em nome de colunas também:
<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> $update = "$variavel=$valor";<br> <br> $sql="Insert into tabela1(Nome,DataHora) values($nome,$data) on duplicate key update $update";
</div></blockquote><div><br>my $query = qq/INSERT INTO TABELA1(Nome, DataHora) values (? , ?) ON DUPLICATE KEY UPDATE ? = ?/;<br></div><br>my $sth = $dbh->prepare($query);<br>$sth->execute($nome, $data, $variavel, $valor) or warn "Problemas ao executar SQL: ", $dbh->errstr;
<br><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div> # $sth =
$dbh->prepare($SQL);<br> # $sth->execute();<br> # $sth->finish();<br><br> }<br> <br> }<br> <br><span style="color: rgb(192, 0, 0);">Entao pessoal esta ai!! :) desculpe se anteriormente nao postava o codigo.. daqui pra frente comecarei a postar!! :P
<br>Ajuda os companheiros tb!!<br><br>:***<br></span><br></div></blockquote></div><br>-- <br>Igor Sutton Lopes<br><a href="http://www.izut.com/">http://www.izut.com/</a>