Jefferson,<br><br>Retornar o número de linhas da query deve resolver seu problema.<br>Para isto, use o método rows do DBI:<br><br><div>sub consulta_banco { </div><div><span style="white-space: pre;">        </span> $dbh = DBI-&gt;connect(&quot;DBI:mysql:database=$database;host=$host&quot;, $user, $pw )  || die print $DBI::errstr; </div>




<div>         $dbh-&gt;{RaiseError} = 1;</div><div><span style="white-space: pre;">        </span> $sth = $dbh-&gt;prepare(&quot; SELECT numero FROM numeros WHERE numero LIKE \&quot;%$_[0]%\&quot; &quot;);</div>
<div>         $sth-&gt;execute() ;<br>         return $sth-&gt;rows;<br></div><div>}<span style="white-space: pre;">        </span></div><br clear="all">Jorge Augusto Senger<br>jasenger (at) <a href="http://gmail.com">gmail.com</a><br>

<br>use Perl;<br>
<br><br><div class="gmail_quote">2010/3/13 jefferson alexandre <span dir="ltr">&lt;<a href="mailto:jefferson.alexandre@gmail.com">jefferson.alexandre@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<div>Bom dia a todos. </div><div>Primeiramente, gostaria de parabenizar aos membros da lista pela educação e respeito com os usuários, independente do nível de conhecimento.  É legal ver que ainda existem listas nacionais que vale a pena frequentar, e esta é uma delas. :D</div>




<div><br></div><div>Recentemente, consegui introduzir o perl no meu ambiente de trabalho, criando algumas ferramentas para manutenção e administração de servidores Asterisk. (PABX IP Open Source.) </div><div>Eu tenho pouca ou quase nenhuma experiência com programação. No máximo, alguns scripts shell que estão sendo devidamente portados/reescritos em Perl. </div>




<div><br></div><div>Eu criei uma rotina para o Asterisk para que, quando um usuário disparar uma ligação, meu script ira consultar o numero digitado pelo usuário com uma base de dados mysql, e então, mediante resultado, ira passar o controle de volta para o asterisk, para que ele complete ou não a ligação. Essa solução será instalada em Callcenters de São Paulo para cumprir esta lei: <a href="http://www.procon.sp.gov.br/noticia.asp?id=934" target="_blank">http://www.procon.sp.gov.br/noticia.asp?id=934</a></div>




<div><br></div><div><br></div><div>O meu problema é, que independente do numero passado pelo asterisk, meu script sempre retorna 0 para a função &amp;consulta_banco, e acaba bloqueando a ligação. </div><div>Eu acredito que poderia resolver isso comparando o valor de $var em um if, mas eu gostaria de entender como resolver isso apenas usando o retorno da função, se este for o modo correto de fazer isso. </div>




<div><br></div><div>Abaixo, o código:</div><div><br></div><div>++ Begin Code ++</div><div>#!/usr/bin/perl -w</div><div><br></div><div>use DBI();</div><div>use Asterisk::AGI;</div><div>$AGI = new Asterisk::AGI;</div><div>



<br></div><div>($database, $host, $user, $pw) = qw( procon 127.0.0.1 usuario senha );</div>
<div>#Obter numero discado  via AGI. Deve retornar algo como (01112345678) ;</div><div>$EXTEN = $AGI-&gt;get_variable(&#39;EXTEN&#39;) ;</div><div><br></div><div><br></div><div>if ( &amp;consulta_banco($EXTEN) )  {</div>



<div><span style="white-space: pre;">        #Colocando o valor &quot;1&quot; na variavel FORBIDEN, que será tratada pelo asterisk, e imprimindo na  tela.</span></div><div><span style="white-space: pre;"></span>        $AGI-&gt;set_variable(&quot;FORBIDEN&quot;, &quot;1&quot;);</div>




<div><span style="white-space: pre;">        </span>$AGI-&gt;verbose(&quot;Numero consta na lista do Procon-SP&quot;) ; </div><div>}  </div><div>else {</div><div><span style="white-space: pre;">        </span>$AGI-&gt;set_variable(&quot;FORBIDEN&quot;, &quot;0&quot;) ;</div>




<div><span style="white-space: pre;">        </span>$AGI-&gt;verbose(&quot;Executando ligacao para $EXTEN&quot;) ; </div><div>}</div><div><br></div><div>#Consultando banco de dados.</div><div>sub consulta_banco { </div><div><span style="white-space: pre;">        </span> $dbh = DBI-&gt;connect(&quot;DBI:mysql:database=$database;host=$host&quot;, $user, $pw )  || die print $DBI::errstr; </div>




<div>         $dbh-&gt;{RaiseError} = 1;</div><div><span style="white-space: pre;">        </span> $sth = $dbh-&gt;prepare(&quot; SELECT numero FROM numeros WHERE numero LIKE \&quot;%$_[0]%\&quot; &quot;);</div>
<div>         $sth-&gt;execute() ;</div><div>}<span style="white-space: pre;">        </span></div>
<div><span style="white-space: pre;"><br></span></div><div><span style="white-space: pre;">++ End Code ++</span></div><div><span style="white-space: pre;">Obrigado, </span></div>
<br>_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br></blockquote></div><br>