<div dir="ltr">Monges! Socorro!<div>Sou bem limitado na programação em perl mas estou evoluindo com o tempo. Então desculpem pelas minhas dúvidas que para vocês, pode ser muito simples...</div><div><br></div><div>Bom, estou utilizando expect com perl e analiso alguns outputs de um servidor, em forma texto, que devo analisar e, dependendo da ocorrência de uma string, devo disparar uma determinada sub-rotina para tratativas específicas.</div>
<div><br></div><div>Ex.: se aparecer a string CONSULTA, devo disparar a subrotina consulta()</div><div>Se aparecer a string OBJETIVO, devo disparar a subrotina obj() e assim por diante.</div><div><br></div><div>O output do servidor é verificado pelo expect e, no momento que devo tomar a decisão, a tela do output é apenas uma, com apenas uma das ocorrências abaixo.</div>
<div><br></div><div>Para verificar isso, estruturei o código .pl assim:</div><div><br></div><div><p style="margin:0px;font-size:11px;font-family:Monaco">$<span style="color:rgb(178,55,243)">exp</span><span style="color:rgb(193,53,0)">-></span>expect<span style="color:rgb(193,53,0)">(</span><span style="color:rgb(178,49,0)">2</span><span style="color:rgb(193,53,0)">,</span></p>

<p style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(178,69,243)"><span style="color:rgb(193,53,0)">              [ </span>qr/SELECIONE/ <span style="color:rgb(193,53,0)">=> \</span><span style="color:rgb(0,0,0)">&select</span><span style="color:rgb(193,53,0)">()],</span></p>

<p style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(178,69,243)"><span style="color:rgb(193,53,0)">              [ </span>qr/OBJETIVO/ <span style="color:rgb(193,53,0)">=> \</span><span style="color:rgb(0,0,0)">&obj</span><span style="color:rgb(193,53,0)">()],</span></p>

<p style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">              [ <span style="color:rgb(178,69,243)">qr/AGUARDE/ </span>=> \<span style="color:rgb(0,0,0)">&sai_6</span>()],</p>
<p style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(178,69,243)"><span style="color:rgb(193,53,0)">              [ </span>qr/CONSULTA/ <span style="color:rgb(193,53,0)">=> \</span><span style="color:rgb(0,0,0)">&consulta</span><span style="color:rgb(193,53,0)">()],</span></p>

<p style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">              [ <span style="color:rgb(0,0,0)">timeout </span>=> \<span style="color:rgb(0,0,0)">&cancela</span>() ],</p>
<p style="margin:0px;font-size:11px;font-family:Monaco;color:rgb(193,53,0)">              );</p></div><div>Ou seja, no meu entendimento limitado, quero que o expect dispare uma das subs acima dependendo da string que ele encontrar no output do servidor.</div>
<div><br></div><div><div>Acredito que a estrutura acima, que parece uma matriz (desculpem a ignorância), vai executar TODAS as subs independente do conteúdo do output do servidor.</div></div><div><br></div><div>O que está acontecendo é que o expect ou o perl só dispara a primeira sub... select()... independente da string encontrada... </div>
<div><br></div><div>Sei que a condição para encontrar as strings funcionam pois, fiz um perl com expect para cada condição acima e, quando rodo individualmente cada .pl, funciona certo... o que estou errando? Como devo fazer o que preciso?</div>
<div><br></div><div>Por favor, ajudem!</div><div><br></div><div>Muito obrigado,</div><div>Atte.,</div><div>Frederico</div><div><br></div></div>