dependendo das opções de otimização as variaveis podem não ser zeradas pelo compilador, no caso do gcc lembro vagamente de algo acontecendo em -O3 e -O4 e acho que o ricbit blogou sobre isso no passado.<div><br></div><div>

mas &quot;zerar&quot; um array é responsabilidade do sistema operacional ou não tem nada haver?</div><div><br><br><div class="gmail_quote">2011/2/14 Stanislaw Pusep <span dir="ltr">&lt;<a href="mailto:creaktive@gmail.com">creaktive@gmail.com</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Se não me engano, zerar as variáveis locais tem mais a ver com a arquitetura do sistema do que especificação do compilador. Já programei em C (não C++) para Solaris em x86 (atrocidade!!!), e não me lembro dele zerar nada sozinho. Sendo que C (e, em menor grau, C++) é o mais &quot;genérico&quot; possível, nada mais justo do que deixar certas coisas &quot;em aberto&quot;. Agora, existir operador &#39;,&#39; em algumas implementações e outras não, aí é sacanagem!<div>

<div></div><div class="h5"><br clear="all">

<br>ABS()<br><br>
<br><br><div class="gmail_quote">2011/2/14 Blabos de Blebe <span dir="ltr">&lt;<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">



No gcc alguns undefined behaviors resultam em segmentation fault, como<br>
é o caso da divisão por zero. Já outros podem ou não emitir warnings<br>
conforme você especificar durante a compilação.<br>
<br>
Os compiladores normalmente fazem um bom trabalho ao escolher o que<br>
fazer com um undefined behavior.<br>
<br>
Mas o ponto é:<br>
<br>
Uma coisa é você desconhecer como funciona a feature, outra é a<br>
linguagem especificar que ela não faz idéia do que pode acontecer.<br>
<br>
Isso sim é bizarro, na minha opinião.<br>
<br>
Abraços<br>
<br>
2011/2/14 Tiago Peczenyj &lt;<a href="mailto:tiago.peczenyj@gmail.com" target="_blank">tiago.peczenyj@gmail.com</a>&gt;:<br>
<div><div></div><div>&gt; E se o compilador jogasse um warning quando estamos usando algo que<br>
&gt; claramente tem undefined behavior (como alguns casos tabelados) ?<br>
&gt; Seria o melhor dos dois mundos: ou o programador sabe com certeza o que esta<br>
&gt; fazendo ou o compilador/interpretador/etc avisa &quot;hum... danadinho...&quot;<br>
&gt;<br>
&gt; 2011/2/14 Blabos de Blebe &lt;<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>&gt;<br>
&gt;&gt;<br>
&gt;&gt; &gt;&gt; Enfim, o que quero dizer é que o Perl tem um imenso potencial de<br>
&gt;&gt; &gt;&gt; produzir<br>
&gt;&gt; &gt;&gt; código cheio de Pseudo-undefined Behavior; por que ninguém tem<br>
&gt;&gt; &gt;&gt; obrigação de<br>
&gt;&gt; &gt;&gt; saber todas as faces de todos os operadores; isso sem contar as<br>
&gt;&gt; &gt;&gt; L&lt;perlvar&gt;.<br>
&gt;&gt;<br>
&gt;&gt; Este email também tem potencial pra produzir undefined behavior.<br>
&gt;&gt; Deveríamos parar de escrever emails por causa disso?<br>
&gt;&gt;<br>
&gt;&gt; Opa, espere um momento. Como assim um programador não deve saber<br>
&gt;&gt; exatamente o que ele está usando?<br>
&gt;&gt;<br>
&gt;&gt; É claro que o programador *tem* sim que conhecer exatamente como<br>
&gt;&gt; funciona cada token que ele está usando, senão é melhor ir vender água<br>
&gt;&gt; de coco na praia.<br>
&gt;&gt;<br>
&gt;&gt; É por isso que certas empresas abrem certas falhas de segurança em<br>
&gt;&gt; certos servidores de produção.<br>
&gt;&gt;<br>
&gt;&gt; O problema é que Perl é uma linguagem muito abrangente e concordo com<br>
&gt;&gt; vc que é praticamente impossível memorizar todos os operadores. Mas se<br>
&gt;&gt; vc *usa*, vc é obrigado a saber.<br>
&gt;&gt;<br>
&gt;&gt; O ponto aliás nem é esse. Desconhecer, não implica em undefined<br>
&gt;&gt; behavior. Implica em não obter o resultado que era esperado, logo a<br>
&gt;&gt; falha está em não ser competente o suficiente para usar esta<br>
&gt;&gt; ferramenta da linguagem.<br>
&gt;&gt;<br>
&gt;&gt; Já em C por exemplo, existem construções que *produzem* undefined<br>
&gt;&gt; behavior, ou seja fica a cargo de quem implementou o compilador<br>
&gt;&gt; resolver. Se ele quiser formatar seu disco ao atingir um ponto desses,<br>
&gt;&gt; ele é livre pra isso.<br>
&gt;&gt;<br>
&gt;&gt; Por exemplo, o padrão C não define se variáveis automáticas (alocadas<br>
&gt;&gt; na pilha) são ou não inicializadas automaticamente. Daí, num<br>
&gt;&gt; compilador do Solaris (o Fernando pode confirmar), todas as variáveis<br>
&gt;&gt; automáticas são inicializadas automaticamente (zero para inteiros). Já<br>
&gt;&gt; no gcc não (mantém-se o valor que já estava na memória). Então, você<br>
&gt;&gt; escreve um código no Solaris, compila, testa, homologa e ok. Aí você<br>
&gt;&gt; leva esse código, que está dentro do padrão, para compilar no gcc e ao<br>
&gt;&gt; rodar na nova plataforma ele quebra.<br>
&gt;&gt;<br>
&gt;&gt; Isso sim é um problema. O mesmo código, estritamente dentro do padrão,<br>
&gt;&gt; apresentando comportamentos diferentes dependendo da situação.<br>
&gt;&gt;<br>
&gt;&gt; Oras, o programador experiente tem que conhecer bem a linguagem pra<br>
&gt;&gt; não cair nessas armadilhas. Se não conhece, não deveria codificar<br>
&gt;&gt; *profissionalmente*.<br>
&gt;&gt;<br>
&gt;&gt; É como se eu pegasse uma faca e saísse dizendo que sou cirurgião, só<br>
&gt;&gt; porque sei cortar carne. E aí, posso fazer uma neurocirugia em você?<br>
&gt;&gt; Eu tenho potencial pra ser um ótimo cirurgião :)<br>
&gt;&gt;<br>
&gt;&gt; As pessoas tem que ter mais responsabilidade. Hoje qualquer mané que<br>
&gt;&gt; mal consegue encadear uma idéia, aprende um if e um for, copia e cola<br>
&gt;&gt; Perl 3 do forum ultra hacker e sai falando que é Analista Programador.<br>
&gt;&gt; É foda viu!<br>
&gt;&gt;<br>
&gt;&gt; De qualquer forma eu acho ótimo esse debate com pontos de vistas<br>
&gt;&gt; diferentes. Ninguém é dono da verdade.<br>
&gt;&gt;<br>
&gt;&gt; Abraços<br>
&gt;&gt;<br>
&gt;&gt; 2011/2/14 Stanislaw Pusep &lt;<a href="mailto:creaktive@gmail.com" target="_blank">creaktive@gmail.com</a>&gt;:<br>
&gt;&gt; &gt; Aliás, o que explode o meu cérebro é a frase &quot;These rules look<br>
&gt;&gt; &gt; complicated,<br>
&gt;&gt; &gt; but usually they will do what you want.&quot;, a respeito do &quot;given/when&quot;,<br>
&gt;&gt; &gt; também<br>
&gt;&gt; &gt; em L&lt;perlsyn&gt; ;)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; ABS()<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 2011/2/14 Stanislaw Pusep &lt;<a href="mailto:creaktive@gmail.com" target="_blank">creaktive@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Ehehe, vou tentar contextualizar a minha lembrança... Tomo como exemplo<br>
&gt;&gt; &gt;&gt; a<br>
&gt;&gt; &gt;&gt; &quot;tabela-verdade&quot; do operador ~~ (&quot;smart matching&quot;, L&lt;perlsyn&gt;):<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;            $a      $b        Type of Match Implied    Matching Code<br>
&gt;&gt; &gt;&gt;            ======  =====     =====================    =============<br>
&gt;&gt; &gt;&gt;            Any     undef     undefined                !defined $a<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;            Any     Object    invokes ~~ overloading on $object, or dies<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;            Hash    CodeRef   sub truth for each key[1] !grep {<br>
&gt;&gt; &gt;&gt; !$b-&gt;($_) }<br>
&gt;&gt; &gt;&gt; keys %$a<br>
&gt;&gt; &gt;&gt;            Array   CodeRef   sub truth for each elt[1] !grep {<br>
&gt;&gt; &gt;&gt; !$b-&gt;($_) }<br>
&gt;&gt; &gt;&gt; @$a<br>
&gt;&gt; &gt;&gt;            Any     CodeRef   scalar sub truth          $b-&gt;($a)<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;            Hash    Hash      hash keys identical (every key is found in<br>
&gt;&gt; &gt;&gt; both hashes)<br>
&gt;&gt; &gt;&gt;            Array   Hash      hash slice existence     grep { exists<br>
&gt;&gt; &gt;&gt; $b-&gt;{$_} } @$a<br>
&gt;&gt; &gt;&gt;            Regex   Hash      hash key grep            grep /$a/, keys<br>
&gt;&gt; &gt;&gt; %$b<br>
&gt;&gt; &gt;&gt;            undef   Hash      always false (undef can&#39;t be a key)<br>
&gt;&gt; &gt;&gt;            Any     Hash      hash entry existence     exists $b-&gt;{$a}<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;            Hash    Array     hash slice existence     grep { exists<br>
&gt;&gt; &gt;&gt; $a-&gt;{$_} } @$b<br>
&gt;&gt; &gt;&gt;            Array   Array     arrays are comparable[2]<br>
&gt;&gt; &gt;&gt;            Regex   Array     array grep               grep /$a/, @$b<br>
&gt;&gt; &gt;&gt;            undef   Array     array contains undef     grep !defined,<br>
&gt;&gt; &gt;&gt; @$b<br>
&gt;&gt; &gt;&gt;            Any     Array     match against an array element[3]<br>
&gt;&gt; &gt;&gt;                                                       grep $a ~~ $_,<br>
&gt;&gt; &gt;&gt; @$b<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;            Hash    Regex     hash key grep            grep /$b/, keys<br>
&gt;&gt; &gt;&gt; %$a<br>
&gt;&gt; &gt;&gt;            Array   Regex     array grep               grep /$b/, @$a<br>
&gt;&gt; &gt;&gt;            Any     Regex     pattern match            $a =~ /$b/<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;            Object  Any       invokes ~~ overloading on $object, or<br>
&gt;&gt; &gt;&gt; falls<br>
&gt;&gt; &gt;&gt; back:<br>
&gt;&gt; &gt;&gt;            Any     Num       numeric equality         $a == $b<br>
&gt;&gt; &gt;&gt;            Num     numish[4] numeric equality         $a == $b<br>
&gt;&gt; &gt;&gt;            undef   Any       undefined                !defined($b)<br>
&gt;&gt; &gt;&gt;            Any     Any       string equality          $a eq $b<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;         1 - empty hashes or arrays will match.<br>
&gt;&gt; &gt;&gt;         2 - that is, each element smart-matches the element of same<br>
&gt;&gt; &gt;&gt; index<br>
&gt;&gt; &gt;&gt; in the<br>
&gt;&gt; &gt;&gt;             other array. [3]<br>
&gt;&gt; &gt;&gt;         3 - If a circular reference is found, we fall back to<br>
&gt;&gt; &gt;&gt; referential<br>
&gt;&gt; &gt;&gt; equality.<br>
&gt;&gt; &gt;&gt;         4 - either a real number, or a string that looks like a number<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Olha, não sei quanto aos outros participantes da lista, mas eu<br>
&gt;&gt; &gt;&gt; simplesmente não consigo me ater a todos esses detalhes<br>
&gt;&gt; &gt;&gt; :(<br>
&gt;&gt; &gt;&gt; Então nunca uso esse operador que me confunde (PARA MIM, é um<br>
&gt;&gt; &gt;&gt; &quot;Undefined<br>
&gt;&gt; &gt;&gt; Behavior&quot;), preferindo fazer &quot;à moda antiga&quot; (última coluna). Enfim,<br>
&gt;&gt; &gt;&gt; sou<br>
&gt;&gt; &gt;&gt; desses caras que enchem qqer operação de ()&#39;s, tipo: ((($x / $y) - $z)<br>
&gt;&gt; &gt;&gt; &gt; 0).<br>
&gt;&gt; &gt;&gt; Enfim, o que quero dizer é que o Perl tem um imenso potencial de<br>
&gt;&gt; &gt;&gt; produzir<br>
&gt;&gt; &gt;&gt; código cheio de Pseudo-undefined Behavior; por que ninguém tem<br>
&gt;&gt; &gt;&gt; obrigação de<br>
&gt;&gt; &gt;&gt; saber todas as faces de todos os operadores; isso sem contar as<br>
&gt;&gt; &gt;&gt; L&lt;perlvar&gt;.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; ABS()<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; 2011/2/14 Blabos de Blebe &lt;<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Oras, isso me lembra<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; <a href="http://www.ioccc.org/1987/wall.c" target="_blank">http://www.ioccc.org/1987/wall.c</a><br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Uma coisa é você usar isso em um golf, outra é usar em código de<br>
&gt;&gt; &gt;&gt;&gt; produção.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Tem gente que empeteca o código com meia dúzia de regexp e se ahca &#39;O<br>
&gt;&gt; &gt;&gt;&gt; Hackerzão&#39;.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; A maior parte dos bugs (com os quais estou lidando agora, por<br>
&gt;&gt; &gt;&gt;&gt; exemplo), teria sido evitada se fossem respeitados os padrões mínimos<br>
&gt;&gt; &gt;&gt;&gt; de boas práticas. Coisa que qualquer estagiário *deveria* sair da<br>
&gt;&gt; &gt;&gt;&gt; escolinha sabendo.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Abraços<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; 2011/2/14 Stanislaw Pusep &lt;<a href="mailto:creaktive@gmail.com" target="_blank">creaktive@gmail.com</a>&gt;:<br>
&gt;&gt; &gt;&gt;&gt; &gt; Não sei pq, mas lembrei da seguinte sintaxe, compilável em Perl:<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; -f&gt;@+?*&lt;.-&amp;&#39;_:$#/%!<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; ABS()<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; 2011/2/14 Blabos de Blebe &lt;<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Bom dia,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Sem querer entrar em flames, ou no mérito da discussão, que tomo<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; apenas como exemplo.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; A thread abaixo é uma discussão que está acontecendo na principal<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; lista de C++ brasileira, sobre undefined behavior.<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;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; <a href="http://groups.google.com/group/ccppbrasil/browse_thread/thread/9b9a7be45917095e#" target="_blank">http://groups.google.com/group/ccppbrasil/browse_thread/thread/9b9a7be45917095e#</a><br>




&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Notem como o Undefined behavior deste exemplo em particular pode<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; ser<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; resolvido com &#39;codificação elegante&#39;. Ok, o assunto era outro e foi<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; só<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; um exemplo rápido, mas levantou a discussão que está acontecendo<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; até<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; agora.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; A maioria dos &#39;Undefined Behaviors&#39; das linguagens de programação<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; que<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; conheço (não são muitos) são casos específicos, incomuns, bem<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; documentados, bem avisados, normalmente abertos por &#39;depender da<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; implementação&#39; e invocados por código porco de programadores<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; meia-boca<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; (não que este caso de *exemplo* seja um).<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; É claro, nenhuma linguagem é perfeita (exceto lisp), mas elas<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; possuem<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; especificações, mais abrangentes ou menos abrangentes. Por isso,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; não<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; importa a linguagem, ou você se aprofunda e aprende, ou mais cedo<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; ou<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; mais tarte, vai acabar caindo em alguma dessas asrmadilhas.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Na minha opinião, C tem mais armadilhas e/ou hacks que precisam de<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; um<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; pouco mais de conhecimento de arquitetura de computadores para<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; escapar<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; do que Perl, enquanto Perl tem outros tipos de armadilhas.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Entenda armadilha aqui como &quot;algo que eu imaginava de um jeito, mas<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; aconteceu de outro&quot;, independente da expectativa ser razoável ou<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; não.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; O negócio é que como Perl é mais fácil de lidar do que C, você<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; alcança<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; as armadilhas de Perl mais cedo do que conseguiria caminhar em C<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; para<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; alcançar as suas, logo, Perl parece mais imprevisível.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Abraços<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; =begin disclaimer<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;  L&lt;<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; =end disclaimer<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; =begin disclaimer<br>
&gt;&gt; &gt;&gt;&gt; &gt;   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;  L&lt;<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; =end disclaimer<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; =begin disclaimer<br>
&gt;&gt; &gt;&gt;&gt;   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
&gt;&gt; &gt;&gt;&gt;  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
&gt;&gt; &gt;&gt;&gt;  L&lt;<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt; =end disclaimer<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; =begin disclaimer<br>
&gt;&gt; &gt;   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
&gt;&gt; &gt;  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
&gt;&gt; &gt;  L&lt;<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>&gt;<br>
&gt;&gt; &gt; =end disclaimer<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; =begin disclaimer<br>
&gt;&gt;   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
&gt;&gt;  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
&gt;&gt;  L&lt;<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>&gt;<br>
&gt;&gt; =end disclaimer<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Tiago B. Peczenyj<br>
&gt; Linux User #405772<br>
&gt;<br>
&gt; <a href="http://pacman.blog.br" target="_blank">http://pacman.blog.br</a><br>
&gt;<br>
&gt; =begin disclaimer<br>
&gt;   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
&gt;  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
&gt;  L&lt;<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>&gt;<br>
&gt; =end disclaimer<br>
&gt;<br>
&gt;<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&lt;<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>&gt;<br>
=end disclaimer<br>
</div></div></blockquote></div><br>
</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">SaoPaulo-pm@pm.org</a><br>
 L&lt;<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>&gt;<br>
=end disclaimer<br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Tiago B. Peczenyj<br>Linux User #405772<br><br><a href="http://pacman.blog.br">http://pacman.blog.br</a><br>
</div>