Se você utilizar placeholders ao invés de compor sua query, o Perl fará isso prá você.<br><br><code><br>my $stmt = $dbh->prepare(qq{INSERT INTO table VALUES (?)}) or die $dbh->error; # acho que é este o método de erro, pode estar errado :P
<br><br>my $str = "lala\nlele\nlili";<br></code><br><br>$stmt->execute($str) or die $dbh->error; # denovo.<br><br><div><span class="gmail_quote">On 6/8/06, <b class="gmail_sendername">Antonio Carlos I. Paes
</b> <<a href="mailto:lists@xms.com.br">lists@xms.com.br</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Calma, ta ficando simples hehe
<br>Eu preciso de na verdade uma barra antes de cada barra, para que o mysql<br>insira direito na tabela...<br>Se mandar eu inserir '\\string', sera inserido na tabela '\string'...<br><br>Mas nao entendi muito bem essa jogada das variaveis, eu tenho o array
<br>declarado la em cima:<br>my ($month, $day, $hour, $hostname, $daemon, @mesg) = @ARGV;<br><br>Mesmo utilizando a forma abaixo ele me da erros declaracao:<br>my ($mesg = "@mesg") =~ s/\\/\\\\/;<br><br>On Thursday 08 June 2006 09:57, Eden Cardim wrote:
<br>> On 6/8/06, Antonio Carlos I. Paes <<a href="mailto:lists@xms.com.br">lists@xms.com.br</a>> wrote:<br>> > Lista,<br>> ><br>> > Surgiu outra duvida a respeito de variaveis,<br>> >
<br>> > Seguindo o conselho, estou usando strict e warnings, mas ele me gera<br>> > essas mensagens:<br>> > "my" variable $mesg masks earlier declaration in same scope at<br>> > ./syslog2db.pl line 48.
<br>> > "my" variable $mesg masks earlier declaration in same scope at<br>> > ./syslog2db.pl line 49.<br>> > Global symbol "$mesg" requires explicit package name at ./syslog2db.pl<br>
> > line 57.<br>> > Execution of ./syslog2db.pl aborted due to compilation errors.<br>> ><br>> > O codigo abaixo representa essas linhas:<br>> > # $mesg<br>> > if (@mesg) {<br>> > my $mesg = "@mesg";
<br>> > my $mesg =~ s/\\/\\\\/g;<br>> > my $mesg = $dsn->quote("$mesg");<br>> > }<br>> > else { return; }<br>><br>> Bem, você está re-declarando o escalar $mesg 2 vezes, e não está
<br>> declarando o array @mesg, por isso os avisos na compilação. Use o my<br>> na primeira aparição da variável apenas.<br>><br>> > Pergunto: Nao ha uma forma mais facil de se definir tudo isso numa linha<br>
> > so?<br>><br>> Não, mas dá pra fazer em duas:<br>> my($mesg = "@mesg") =~ s/\\/\\\\/g;<br>> $mesg = $dsn->quote("$mesg");<br>><br>> > Como o Perl interpreta esse tipo de situacao, onde a variavel e'
<br>> > substituida por ela mesmo.<br>><br>> Como qualquer outra linguagem, o lado direito da expressão de<br>> atribuição é avaliado primeiro na pilha.<br>><br>> > Obs.: Utilizei o "s/\\/\\\\/g" para "escapar" as barras (\), o quote()
<br>> > nao me fez isso...<br>><br>> se você tirar as aspas de "$mesg", o perl não vai interpolar as barras<br>> e você não vai precisar as barras e o código final vai ficar assim:<br>><br>> my $mesg = $dsn->quote("@mesg");
<br>><br>> bem mais simples né? ;)<br>> _______________________________________________<br>> Cascavel-pm mailing list<br>> <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>> <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm">
http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>_______________________________________________<br>Cascavel-pm mailing list<br><a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br><a href="http://mail.pm.org/mailman/listinfo/cascavel-pm">
http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br></blockquote></div><br><br clear="all"><br>-- <br>Igor Sutton Lopes<br><a href="http://www.izut.com/">http://www.izut.com/</a>