<div dir="ltr"><div>E depois manda o codigo final pra ter como referencia da solucao aqui nesta enxurrada de emails...<br><br></div>Pois derepente la na frente alguem tem o mesmo problema, e vai ler todos estes emails e não vai chegar na solućão. <br>
<br>Então poste essa solućão tb por favor.<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/5/2 Renato Santos <span dir="ltr"><<a href="mailto:renato.cron@gmail.com" target="_blank">renato.cron@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">(totalmente por fora, nunca usei esses modulos/cheguei perto desse tipo de interação)<div><br></div><div>
but..</div><div><br></div><div>pelo que entendi, seu primeiro "expect" já captura várias informações, e ai você quer continuar fazendo "expects" com a entrada dela, por exemplo:</div>

<div><br></div><div><br></div><div>COMECO</div><div>[NOME:CRON]</div><div>[ANO:1992]</div><div>FIM</div><div><br></div><div>vc usaria o expect algo como qr/COMECO(.1)FIM/ e ai o modulo se vira pra ler de pouco até chegar o dado 'FIM', quando faz isso, toda a string desde o "COMECO" até "FIM" já está na memoria (nao sei exatamente se é no $1, mas vc já deve saber como usar) e ai assim,</div>


<div><br></div><div>isso é apenas string, vc pode até usar o expect passando o $stringref, mas nao sei se é realmente necessário, já que você pode simplesmente usar algo como</div><div><font face="courier new, monospace"><br>


</font></div><div><div><font face="courier new, monospace">while ($str =~ /\[(.+)\:(.+)\]/g){</font></div><div><font face="courier new, monospace">    my ($chave,$valor) = ($1, $2);</font></div><div><font face="courier new, monospace">    print "$chave = $valor\n";</font></div>


<div><font face="courier new, monospace">}</font></div></div><div><br></div></div><div class="gmail_extra"><div><div class="h5"><br><br><div class="gmail_quote">2013/5/2 Frederico Melo <span dir="ltr"><<a href="mailto:fdmmelo@gmail.com" target="_blank">fdmmelo@gmail.com</a>></span><br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Eden! Obrigado! Funcionou! Muito obrigado mesmo!<br><br></div>Sem querer abusar, gostaria de entender melhor como crio os blocos de processamento dentro do expect. Por exemplo:<br>


<br><br>#$exp->expect(5, [qr/.{1920}/ => sub {<br>

#                                         my($self) = @_;<br>#                                         print $self->match;<br>#<br>#                                         exp_continue;<br>#                                      },<br>




#                   timeout => sub { die 'o sistema parou de responder' }<br>#                  ]<br>#            );<br><br></div><div>Entendo que no bloco acima, limitado pelo primeiro "(" e o último ")" executo o print que corresponde ao retorno da REGEX. OK! É possível, dentro do mesmo bloco do expect, criar vários blocos limitados por "[" e "]" e processar várias REGEXs? Como faço isso? Seria algo como feito abaixo?<br>




<br><br></div><div>#$exp->expect(5, [qr/.{1920}/ => sub {<br>#                                         my($self) = @_;<br>#                                         print $self->match;<br>#<br>#                                         exp_continue;<br>




#                                      },<br>#                   timeout => sub { die 'o sistema parou de responder' }<br>#                  ],<br>#<br>#                  [qr/DATA\s+.:(.+)/ => sub {<br>#                                         my($self1) = shift;<br>




#                                         print $self1->match;<br>#<br>#                                         exp_continue;<br>#                                      },<br>#                   timeout => sub { die 'o sistema parou de responder' }<br>




#                  ]<br>#            );<br><br><br></div>Fiz isso no código e não há print do $self1, como se o código nem entrasse no segundo bloco de REGEX. Se coloco o segundo bloco de REGEX no lugar do primeiro, o print funciona. O que está errado? <br>




<div><div><div><br><br></div><div>Procurei na documentação do Expect e vi que existe uma chamada para CallBacks. Tipo:<br><br><pre>  <span>$exp</span><span>-></span><span>expect</span><span>(</span><span>$timeout</span><span>,</span>
               <span>[</span> <span>qr</span><span>/regex1/</span> <span>=></span> <span>sub</span> <span>{</span> <span>my</span> <span>$exp</span> <span>=</span> <span>shift</span><span>;</span>
                                     <span>$exp</span><span>-></span><span>send</span><span>(</span><span>"response\n"</span><span>);</span>
                                     exp_continue<span>;</span> <span>}</span> <span>],</span>
               <span>[</span> <span>"regexp2"</span> <span>,</span> <span>\&</span>callback<span>,</span> <span>@cbparms</span> <span>],</span>
              <span>);</span></pre><br></div><div>Não soube como utilizar isso. Seria possível ajudar?<br></div><div><br></div><div><br></div><div>Obrigado novamente e desculpe a trabalheira.<span><font color="#888888"><br>


<br></font></span></div><span><font color="#888888"><div><br>
</div></font></span></div></div><span><font color="#888888"><div class="gmail_extra">Frederico<br></div></font></span><div><div><div class="gmail_extra"><br><div class="gmail_quote">2013/4/29 Eden Cardim <span dir="ltr"><<a href="mailto:eden@insoli.de" target="_blank">eden@insoli.de</a>></span><br>




<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Experimenta trocar as regex mencionadas abaixo pelas sugestões que<br>
seguem:<br>
<br>
    Frederico> data: SIGLA.........: XYZ NUMERO DO COD.: 0DD<br>
    Frederico> qr/data:\s+(.+)NUMERO\s+(.+)/<br>
<br>
qr/NUMERO DO COD\.*?:\s*?(\S+)/;<br>
<br>
    Frederico> data: LOCALIDADE....: XISYPSZE<br>
    Frederico> qr/data:\s+LOCALIDADE(.+)/<br>
<br>
qr/LOCALIDADE\.*?:\s*?(\S+)/;<br>
<div><br>
--<br>
Eden Cardim -- Insolide Soluções de TI Ltda.<br>
<a href="tel:%2B55%2011%209644%208225" value="+551196448225" target="_blank">+55 11 9644 8225</a><br>
<a href="http://insoli.de" target="_blank">http://insoli.de</a><br>
</div><div><div>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
</div></div></blockquote></div><br></div></div></div></div>
<br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br><br clear="all"><div><br></div></div></div><span class="HOEnZb"><font color="#888888">-- <br><div><span style="color:rgb(51,51,51);font-size:x-small">Saravá,</span></div><div><span style="color:rgb(51,51,51);font-size:x-small">Renato CRON</span></div>


<div><div style="text-align:right"><font color="#333333" size="1"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div></div><div style="text-align:right"><font color="#333333" size="1"><a href="http://twitter.com/#!/renato_cron" target="_blank">@renato_cron</a></font></div>



</font></span></div>
<br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br></div>