<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=windows-1252"
 http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Se bem que... o cara já tem o caminho das pedras... tava bom para ele
começar a ler o código e os manuais...<br>
Hoje não posso ajudar mais pq tenho aulas de Perl para ministrar...<br>
<br>
Leia os Manuais e poste mais dúvidas... se postar levianamente Trolls
podem aparecer.<br>
<br>
Em 12/07/2010 17:59, Bruno Buss escreveu:
<blockquote
 cite="mid:AANLkTild9nE0ImVPle5eWKzZVQxKr8XRWJqvqNJJdXFS@mail.gmail.com"
 type="cite">Talvez você queira diminuir o timeout padrão:
  <div>sub PING_TIMEOUT () { 5 }</div>
  <div>(No seu script era 1 segundo se não me engano)</div>
  <div><br>
  </div>
  <div>No POE::Component::Client::Ping-&gt;spawn, talvez você queira
passar a opção Parallelism, ex:</div>
  <div>
  <div>POE::Component::Client::Ping-&gt;spawn(</div>
  <div>  Alias   =&gt; 'pinger',        # The component's name will be
"pinger".</div>
  <div>  Timeout =&gt; PING_TIMEOUT,    # The default ping timeout.</div>
  <div>  Parallelism =&gt; 128</div>
  <div>);</div>
  </div>
</blockquote>
<br>
No seu código o paralelismo era 250... <br>
<br>
<blockquote
 cite="mid:AANLkTild9nE0ImVPle5eWKzZVQxKr8XRWJqvqNJJdXFS@mail.gmail.com"
 type="cite">
  <div><br>
  <div class="gmail_quote">2010/7/12 João André Simioni <span dir="ltr">&lt;<a
 moz-do-not-send="true" href="mailto:jasimioni@gmail.com">jasimioni@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;">Thiago,<br>
    <br>
dando uma bem de vagabundo, não li nada  do POE, só modifiquei o<br>
código abaixo para pingar todos os meus Hosts.<br>
    <br>
Mas ele está fazendo poucos processos paralelos. O tempo total de<br>
testes está 11 minutos com o POE, e o load nem faz cócegas. Sabem<br>
fácil como mexer nisso?<br>
    <br>
Obrigado<br>
    <div>
    <div class="h5"><br>
2010/7/12 Thiago Glauco Sanchez &lt;<a moz-do-not-send="true"
 href="mailto:thiagoglauco@ticursos.net">thiagoglauco@ticursos.net</a>&gt;:<br>
&gt; Puxa... eu sou muito "toupeira"... já tem código de exemplo para
isso feito<br>
&gt; e muito mais pratico e completo que o meu...:<br>
&gt;<br>
&gt; <a moz-do-not-send="true"
 href="http://poe.perl.org/?POE_Cookbook/Pinging_Multiple_Hosts"
 target="_blank">http://poe.perl.org/?POE_Cookbook/Pinging_Multiple_Hosts</a><br>
&gt;<br>
&gt; Em 12/07/2010 15:52, Thiago Glauco Sanchez escreveu:<br>
&gt;&gt;<br>
&gt;&gt; Um pequeno exemplo que eu criei apenas para ilustrar... o
pessoal que<br>
&gt;&gt; desejar incrementar, por favor, be my guest.<br>
&gt;&gt;<br>
&gt;&gt; use 5.12.0;<br>
&gt;&gt;  use POE;<br>
&gt;&gt;  use Net::Ping;<br>
&gt;&gt;    POE::Session-&gt;create(<br>
&gt;&gt;        inline_states =&gt; {<br>
&gt;&gt;        _start  =&gt; sub {<br>
&gt;&gt;            my ($kernel) = $_[KERNEL];<br>
&gt;&gt;            print "Setting up a session\n";<br>
&gt;&gt;            $kernel-&gt;yield("ping");<br>
&gt;&gt;        },<br>
&gt;&gt;<br>
&gt;&gt;        ping =&gt; sub{my ($kernel) = $_[KERNEL];<br>
&gt;&gt;            my @ping = `ping -n 1 <a moz-do-not-send="true"
 href="http://www.ticursos.net" target="_blank">www.ticursos.net</a>`;<br>
&gt;&gt;            map{say "ping externo ok" if $_ =~ /Perdidos = 0/ }
@ping;<br>
&gt;&gt;            $kernel-&gt;delay_set("net_ping" =&gt; 3);<br>
&gt;&gt;<br>
&gt;&gt;        },<br>
&gt;&gt;<br>
&gt;&gt;        net_ping =&gt; sub{ my ($kernel) = $_[KERNEL];<br>
&gt;&gt;                    my $p = Net::Ping-&gt;new();<br>
&gt;&gt;                    $p-&gt;port_number(80);<br>
&gt;&gt;                    my ($ret, $duration, $ip) = $p-&gt;ping('<a
 moz-do-not-send="true" href="http://ticursos.net" target="_blank">ticursos.net</a>');<br>
&gt;&gt;                    say "net::ping ok" if $ret;<br>
&gt;&gt;                    $p-&gt;close();<br>
&gt;&gt;                    $kernel-&gt;delay_set("ping" =&gt; 3)<br>
&gt;&gt;                },<br>
&gt;&gt;        },<br>
&gt;&gt;    );<br>
&gt;&gt;<br>
&gt;&gt;    say "Iniciando o Kernel...";<br>
&gt;&gt;    $poe_kernel-&gt;run(  );<br>
&gt;&gt;    exit(0);<br>
&gt;&gt;<br>
&gt;&gt;    sub start {<br>
&gt;&gt;        my ($kernel) = $_[KERNEL];<br>
&gt;&gt;       say "Iniciando os testes com POE";<br>
&gt;&gt;        $kernel-&gt;yield("ping");<br>
&gt;&gt;    }<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Em 12/07/2010 15:38, João André Simioni escreveu:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; O pessoal comentou - eu vou dar uma olhada nele com
atenção.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Obrigado pela dica.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; 2010/7/12 Thiago Glauco Sanchez&lt;<a
 moz-do-not-send="true" href="mailto:thiagoglauco@ticursos.net">thiagoglauco@ticursos.net</a>&gt;:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; O Perl tem um framework para aplicações em rede e
Multitarefa chamada<br>
&gt;&gt;&gt;&gt; POE<br>
&gt;&gt;&gt;&gt; que<br>
&gt;&gt;&gt;&gt; "Provide a cooperative scheduling and multitasking
environment rivalling<br>
&gt;&gt;&gt;&gt; threads and IPC"<br>
&gt;&gt;&gt;&gt; Não seria o caso de estudarmos a possibilidade de usar
esse framework no<br>
&gt;&gt;&gt;&gt; seu<br>
&gt;&gt;&gt;&gt; sistema???<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Em 11/07/2010 23:57, João André Simioni escreveu:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Foi um typo - erro de digitação - o Net::Ping
testa TCP e UDP. O ping<br>
&gt;&gt;&gt;&gt;&gt; externo ICMP.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Mas assim, eu preciso resolver o problema com esse
teste em Perl -<br>
&gt;&gt;&gt;&gt;&gt; como eu disse, essa parte do código é só um pedaço
de um sistema<br>
&gt;&gt;&gt;&gt;&gt; maior. SNMP já é usado para várias outras coisas,
mas dependem de<br>
&gt;&gt;&gt;&gt;&gt; access lists em routers e eu não tenho como
liberar.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; []'s<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; 2010/7/11 Thiago Glauco Sanchez&lt;<a
 moz-do-not-send="true" href="mailto:thiagoglauco@ticursos.net">thiagoglauco@ticursos.net</a>&gt;:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; O que eu quero dizer: você testou com o ping
externo que é um teste<br>
&gt;&gt;&gt;&gt;&gt;&gt; icmp...<br>
&gt;&gt;&gt;&gt;&gt;&gt; depois fez outro teste icmp com o Net::Ping...<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Não seria mais interessante testar de outra
forma?<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;    $p = Net::Ping-&gt;new("tcp", 2);<br>
&gt;&gt;&gt;&gt;&gt;&gt;    $p-&gt;port_number(getservbyname("http",
"tcp"));<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Mais umas coisas: Suas máquinas/equipamentos
em teste estão via<br>
&gt;&gt;&gt;&gt;&gt;&gt; internet<br>
&gt;&gt;&gt;&gt;&gt;&gt; ou<br>
&gt;&gt;&gt;&gt;&gt;&gt; rede local?<br>
&gt;&gt;&gt;&gt;&gt;&gt; Já pensou em usar SNMP? Já tive um problema
parecido e iria utilizar<br>
&gt;&gt;&gt;&gt;&gt;&gt; um<br>
&gt;&gt;&gt;&gt;&gt;&gt; processo para cada equipamento por desempenho
e acabai optando por<br>
&gt;&gt;&gt;&gt;&gt;&gt; utilizar<br>
&gt;&gt;&gt;&gt;&gt;&gt; o Net:SNMP<br>
&gt;&gt;&gt;&gt;&gt;&gt; que permite utilizar uma função de callback em
vez de utilizar um<br>
&gt;&gt;&gt;&gt;&gt;&gt; processo<br>
&gt;&gt;&gt;&gt;&gt;&gt; para cada equipamento. Eu mando uma requisição
para todos os<br>
&gt;&gt;&gt;&gt;&gt;&gt; equipamentos<br>
&gt;&gt;&gt;&gt;&gt;&gt; e<br>
&gt;&gt;&gt;&gt;&gt;&gt; conforme eles respondem<br>
&gt;&gt;&gt;&gt;&gt;&gt; a função de call-back trata a requisição.<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Porém, não conheço o seu ambiente. Apenas acho
que criar 4000 threads<br>
&gt;&gt;&gt;&gt;&gt;&gt; não<br>
&gt;&gt;&gt;&gt;&gt;&gt; seja a melhor solução.<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Em 11/07/2010 23:18, João André Simioni
escreveu:<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; É typo - já está certo no código. ICMP vai
via comando externo, UDP e<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; TCP via Net::Ping.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Com relação aos testes, é normal um
momento de sobrecarga causar a<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; não<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; resposta de testes - essas sobrecargas não
devem duram mais que 5<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; segundos. Por isso o sleep - assim eu faço
o mesmo teste 3x, com<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; intervalos de 3 segundos.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; []'s<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; On Sun, Jul 11, 2010 at 10:31 PM, Blabos
de Blebe&lt;<a moz-do-not-send="true" href="mailto:blabos@gmail.com">blabos@gmail.com</a>&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;  wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Não seria um typo?<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; icmp -&gt;      ping;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; tcp e udp -&gt;      Net::Ping<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On Sun, Jul 11, 2010 at 6:42 PM,
Thiago Glauco Sanchez<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;<a moz-do-not-send="true"
 href="mailto:thiagoglauco@ticursos.net">thiagoglauco@ticursos.net</a>&gt;
     wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Sim sim, entendi sua preocupação.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Mas em vez de:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; for (1..3) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           my $ping = `/bin/ping -c
1 -w 1 $ip`;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; não seria melhor já mandar pingar
as 3 vezes no comando ou apenas<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 1?<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Você<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; está gerando 3 processos externos
sem necessidade real.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; outra... o comando ping já não é
icmp?<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my $p =
Net::Ping-&gt;new('icmp')???<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Em 11/07/2010 17:04, João André
Simioni escreveu:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Eu quero fazer o ping de 3
formas - UDP Echo / TCP Echo e ICMP<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Echo.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Alguns clientes tem filtros e
assim eu evito falsos positivos.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Net::Ping mesmo com root tem
resultados incoerentes quando uso<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ICMP e<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Threads.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; []'s<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On Sun, Jul 11, 2010 at 4:56
PM, Thiago Glauco Sanchez<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;<a moz-do-not-send="true"
 href="mailto:thiagoglauco@ticursos.net">thiagoglauco@ticursos.net</a>&gt;
       wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Endosso a solução do Lorn.
Use o POE.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; E cara... pra que isso??<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sub checkIp {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;    my $ip = shift;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;    my $pingOk = 0;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;    eval {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;        for (1..3) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;            my $ping =
`/bin/ping -c 1 -w 1 $ip`;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;            if (grep { / 0%
packet loss/ } $ping) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                $pingOk = 1;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                return 1;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;            }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;            if ($pingOk ==
0) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                my $p =
Net::Ping-&gt;new('icmp');<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;              
 $p-&gt;service_check(1);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                if
($p-&gt;ping($ip, 1)) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                    $pingOk
= 1;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                    return
1;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;            }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;            if ($pingOk ==
0) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                my $p =
Net::Ping-&gt;new('udp');<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;              
 $p-&gt;service_check(1);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                if
($p-&gt;ping($ip, 1)) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                    $pingOk
= 1;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                    return
1;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;            }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;            sleep 3;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;        }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;    };<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Para pingar com ping
externo, depois com o Net::Ping via icmp e<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; depois<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; com<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; net::Ping udp? Ah... se
não me engano, Net::Ping precisa de<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; permissão<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; root<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; para retornar um icmp de
forma correta...<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Em 09/07/2010 17:48, João
André Simioni escreveu:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Caros,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; tenho um script para
testar cerca de 4700 equipamentos, usando<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ping.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Queria usar cerca 250
threads para isso, então o que eu fiz foi<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; quebrar o grupo de
4300 em grupos 18 elementos e abri uma thread<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; para<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; cada.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Não há nenhum problema
com o código, o que acontece é que o<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; tempo<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; de<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; abertura das threads é
muito alto. E quanto mais threads eu<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; abro,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; maior o tempo para
abertura das próximas. As primeiras abrem em<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 30ms,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; mas perto da thread 70
esse tempo já vai para quase 1 segundo.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Vocês sabem como
otimizar esse tempo de abertura? Ou alguma<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; outra<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; solução?<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Segue o output do
script como exemplo:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Para 4677 cpes, e 250
threads, tenho no final 246 grupos, com 19<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; elementos<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; cada<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Trying to create
thread in Fri Jul  9 17:46:50 2010.61858<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Created thread 1 (1) -
took 0.030138 seconds to create<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Trying to create
thread in Fri Jul  9 17:46:50 2010.92080<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Created thread 2 (2) -
took 0.042668 seconds to create<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Trying to create
thread in Fri Jul  9 17:46:50 2010.134968<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Created thread 3 (3) -
took 0.064245 seconds to create<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Trying to create
thread in Fri Jul  9 17:46:50 2010.199430<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Created thread 4 (4) -
took 0.082642 seconds to create<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Trying to create
thread in Fri Jul  9 17:46:50 2010.282278<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Created thread 5 (5) -
took 0.128257 seconds to create<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Trying to create
thread in Fri Jul  9 17:46:50 2010.410769<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Created thread 6 (6) -
took 0.136458 seconds to create<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Trying to create
thread in Fri Jul  9 17:46:50 2010.547383<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Created thread 7 (7) -
took 0.208085 seconds to create<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Trying to create
thread in Fri Jul  9 17:46:50 2010.755594<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Created thread 8 (8) -
took 0.173014 seconds to create<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Trying to create
thread in Fri Jul  9 17:46:50 2010.928756<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Created thread 9 (9) -
took 0.132713 seconds to create<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Trying to create
thread in Fri Jul  9 17:46:51 2010.61608<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Created thread 10 (10)
- took 0.127795 seconds to create<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Trying to create
thread in Fri Jul  9 17:46:51 2010.189536<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Created thread 11 (11)
- took 0.301836 seconds to create<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Obrigado<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; João André Simioni<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; #!/usr/bin/perl<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; use strict;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; use DBI;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; use Net::Ping;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; use Time::HiRes
qw/usleep tv_interval gettimeofday/;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; use threads ('yield',
'stack_size' =&gt;          32*4096, 'exit'<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; =&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 'threads_only',
'stringify');<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my $host =
'192.168.160.179';<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my $sid  = 'HOMOLOG';<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my $user = 'mac_user';<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my $pass = 'mac_user';<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my $dbh =
DBI-&gt;connect("dbi:Oracle:host=$host;sid=$sid", $user,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; $pass,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; { AutoCommit =&gt;    
     1 });<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my $sth =
$dbh-&gt;prepare('SELECT CPE_ID, CLIENTE_ID, CPE_DESC,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; CPE_IP_WAN, CPE_NODE,
CPE_IF FROM MAC_CPE WHERE CPE_PING = ? AND<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; CPE_ATIVO = ?');<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; $sth-&gt;execute('1',
'A');<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my @cpes;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; while (my (@row) =
$sth-&gt;fetchrow_array) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     push @cpes, [ @row
];<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; $dbh-&gt;disconnect();<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my $maxThreads = 250;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my $total      = @cpes;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my $cpePerThread =
int($total / $maxThreads);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my @toMonitor;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my $i = 0;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my $c = 0;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; foreach my $cpe
(@cpes) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     push
@{$toMonitor[$i]}, $cpe;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     $c++;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     if ($c&gt;        
 $cpePerThread) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;         $i++;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;         $c = 0;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; print "Para $total
cpes, e $maxThreads threads, tenho no final<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; $i<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; grupos, com ", scalar
@{$toMonitor[0]}, " elementos cada\n";<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sub processResult {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     my $r = shift;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     if (ref $r ne
'ARRAY') {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;         print STDERR
"Erro na thread\n";<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;         return 0;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     my ($result,
$host, $ifs) = @$r;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sub testeClient {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     my $threadNum =
shift;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     my $cpeGroup  =
shift;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     foreach my $cpe
(@{$cpeGroup}) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;         my ($cpeId,
$clientId, $cpeDesc, $cpeIp, $cpeNode,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; $cpeIf)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; =<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; @$cpe;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;         my $pingOk
=&amp;checkIp($cpeIp);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;         my $status =
$pingOk ? 'RESPONDE' : 'MORTO';<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;         # print
join(", ", $threadNum, $cpeId, $clientId,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; $cpeDesc,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; $cpeIp, $cpeNode,
$cpeIf, $status), "\n";<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     # print "Finishing
thread $threadNum\n";<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     return([1, 0]);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my $threadCount = 1;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; foreach my $cpeGroup
(@toMonitor) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     print "Trying to
create thread";<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     my $t0 =
[gettimeofday];<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     print " in ",
scalar localtime $t0-&gt;[0], ".", $t0-&gt;[1],<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; "\n";<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     my $thr =
threads-&gt;create({scalar =&gt;          '1'},<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 'testeClient',<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; $threadCount,
$cpeGroup);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     my $elapsed =
tv_interval ( $t0, [gettimeofday]);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     print "Created
thread $thr ($threadCount) - took $elapsed<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; seconds<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; to create\n";<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     $threadCount++;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     while
(threads-&gt;list()&gt;= $maxThreads) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;         my @joinable =
threads-&gt;list(threads::joinable);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;         for
(@joinable) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;             my $r =
$_-&gt;join();<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &amp;processResult($r);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;         }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;         usleep(10000);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     my $elapsed =
tv_interval ( $t0, [gettimeofday]);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; while
(threads-&gt;list()) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     my @joinable =
threads-&gt;list(threads::joinable);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     for (@joinable) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;         my $r =
$_-&gt;join();<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &amp;processResult($r);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     usleep(10000);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sub checkIp {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     my $ip = shift;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     my $pingOk = 0;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     eval {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;         for (1..3) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;             my $ping =
`/bin/ping -c 1 -w 1 $ip`;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;             if (grep {
/ 0% packet loss/ } $ping) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                
$pingOk = 1;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                 return
1;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;             }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;             if
($pingOk == 0) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                 my $p
= Net::Ping-&gt;new('icmp');<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                
$p-&gt;service_check(1);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                 if
($p-&gt;ping($ip, 1)) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                    
$pingOk = 1;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                    
return 1;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                 }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;             }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;             if
($pingOk == 0) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                 my $p
= Net::Ping-&gt;new('udp');<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                
$p-&gt;service_check(1);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                 if
($p-&gt;ping($ip, 1)) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                    
$pingOk = 1;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                    
return 1;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                 }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;             }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;             sleep 3;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;         }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     };<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     return $pingOk;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;
_______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Rio-pm mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a
 moz-do-not-send="true" href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a
 moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; What is the sound of Perl?
Is it not the sound of a wall that<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; people<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; have<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; stopped banging their
heads against?<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; —Larry Wall<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Thiago Glauco Sanchez<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Intrutor Perl e Redes<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="http://www.ticursos.net" target="_blank">www.ticursos.net</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;
_______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Rio-pm mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;
_______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Rio-pm mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; What is the sound of Perl? Is it
not the sound of a wall that<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; people<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; have<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; stopped banging their heads
against?<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; —Larry Wall<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Thiago Glauco Sanchez<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Intrutor Perl e Redes<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="http://www.ticursos.net" target="_blank">www.ticursos.net</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;
_______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Rio-pm mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;
_______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Rio-pm mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;
_______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Rio-pm mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt;&gt;&gt; What is the sound of Perl? Is it not the sound
of a wall that people<br>
&gt;&gt;&gt;&gt;&gt;&gt; have<br>
&gt;&gt;&gt;&gt;&gt;&gt; stopped banging their heads against?<br>
&gt;&gt;&gt;&gt;&gt;&gt; —Larry Wall<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Thiago Glauco Sanchez<br>
&gt;&gt;&gt;&gt;&gt;&gt; Intrutor Perl e Redes<br>
&gt;&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="http://www.ticursos.net" target="_blank">www.ticursos.net</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt; Rio-pm mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt; Rio-pm mailing list<br>
&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt;&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt; What is the sound of Perl? Is it not the sound of a
wall that people<br>
&gt;&gt;&gt;&gt; have<br>
&gt;&gt;&gt;&gt; stopped banging their heads against?<br>
&gt;&gt;&gt;&gt; —Larry Wall<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Thiago Glauco Sanchez<br>
&gt;&gt;&gt;&gt; Intrutor Perl e Redes<br>
&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="http://www.ticursos.net" target="_blank">www.ticursos.net</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt; Rio-pm mailing list<br>
&gt;&gt;&gt;&gt; <a moz-do-not-send="true" href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt;&gt;&gt;&gt; <a moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; Rio-pm mailing list<br>
&gt;&gt;&gt; <a moz-do-not-send="true" href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt;&gt;&gt; <a moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; What is the sound of Perl? Is it not the sound of a wall that
people have<br>
&gt; stopped banging their heads against?<br>
&gt; —Larry Wall<br>
&gt;<br>
&gt; Thiago Glauco Sanchez<br>
&gt; Intrutor Perl e Redes<br>
&gt; <a moz-do-not-send="true" href="http://www.ticursos.net"
 target="_blank">www.ticursos.net</a><br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Rio-pm mailing list<br>
&gt; <a moz-do-not-send="true" href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
&gt; <a moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt;<br>
_______________________________________________<br>
Rio-pm mailing list<br>
    <a moz-do-not-send="true" href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
    <a moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
    </div>
    </div>
  </blockquote>
  </div>
  <br>
  <br clear="all">
  <br>
-- <br>
Bruno C. Buss<br>
  <a moz-do-not-send="true" href="http://brunobuss.wordpress.com/">http://brunobuss.wordpress.com/</a><br>
  <a moz-do-not-send="true" href="http://www.dcc.ufrj.br/%7Ebrunobuss/">http://www.dcc.ufrj.br/~brunobuss/</a><br>
  </div>
  <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
Rio-pm mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a>
<a class="moz-txt-link-freetext" href="http://mail.pm.org/mailman/listinfo/rio-pm">http://mail.pm.org/mailman/listinfo/rio-pm</a></pre>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">-- 
What is the sound of Perl? Is it not the sound of a wall that people have
stopped banging their heads against?
—Larry Wall

Thiago Glauco Sanchez
Intrutor Perl e Redes
<a class="moz-txt-link-abbreviated" href="http://www.ticursos.net">www.ticursos.net</a>
</pre>
</body>
</html>