<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Algo similar acontece com programa&ccedil;&atilde;o Java para celular.<br>
    <br>
    Dependendo do aparelho e das vers&otilde;es, um mesmo programa pode:<br>
    <ol>
      <li>Funcionar 100% e lhe garantir um contrato de ouro.</li>
      <li>Funcionar 90%, e lhe garantir bugs lists. (Por exemplo, o
        programa n&atilde;o permite acessar 1 das telas).</li>
      <li>Ele funciona 50%, e detonar sua reputa&ccedil;&atilde;o. (O programa
        funciona a primeira vez, depois precisa reiniciar o aparelho).</li>
      <li>Funciona 0%... ai meu caro, &eacute; sentar e chorar, porque muito
        provavelmente n&atilde;o apareceu mensagem de erro...</li>
    </ol>
    Isso aconteceu comigo, no meu casos foi muito desconfort&aacute;vel, porque
    n&atilde;o aparecia erro algum na hora de gerar o Jar... mas, em alguns
    aparelhos Nokia (n&atilde;o todos), recebia a mensagem Segmentation Fault.<br>
    <br>
    O motivo?<br>
    <br>
    Eu precisava declarar e preencher previamente todos os espa&ccedil;os dos
    arrays, n&atilde;o bastava simplesmente declarar, precisava setar $birosca
    = array(0=&gt;"buh", 1=&gt;"buh", etc...).<br>
    <br>
    Meus queridos, que neg&oacute;cio idiota, mas que nervoso eu passei... at&eacute;
    hoje n&atilde;o tenho a explica&ccedil;&atilde;o exata para esse comportamento... e para
    chegar nesse resultado, demorou viu... eu cheguei a reescrever 100%
    o programa.<br>
    <br>
    Nunca vi isso ocorrer com qualquer outra linguagem.<br>
    <br>
    Isso resultou em uma m&aacute;xima que levarei para todo o sempre, rs.
    Testar programas para celular = testar no dispositivo.<br>
    <br>
    <br>
    <div class="moz-signature"><span style="font-size: 10px;"><b>Auctorita</b></span><br>
      <span style="font-size: 9px;">
        Site: <a href="http://auctorita.com.br">auctorita.com.br</a><br>
        MSN: <a class="moz-txt-link-abbreviated" href="mailto:luiz@auctorita.com.br">luiz@auctorita.com.br</a><br>
        Telefones: 11 4063-1233<br>
        <span></span></span></div>
    <br>
    On 14-02-2011 15:40, Blabos de Blebe wrote:
    <blockquote
      cite="mid:AANLkTikWRd45D_wU1Eff+em_ij1wvhqEZvHunt-4cdYD@mail.gmail.com"
      type="cite">
      <pre wrap="">No gcc alguns undefined behaviors resultam em segmentation fault, como
&eacute; o caso da divis&atilde;o por zero. J&aacute; outros podem ou n&atilde;o emitir warnings
conforme voc&ecirc; especificar durante a compila&ccedil;&atilde;o.

Os compiladores normalmente fazem um bom trabalho ao escolher o que
fazer com um undefined behavior.

Mas o ponto &eacute;:

Uma coisa &eacute; voc&ecirc; desconhecer como funciona a feature, outra &eacute; a
linguagem especificar que ela n&atilde;o faz id&eacute;ia do que pode acontecer.

Isso sim &eacute; bizarro, na minha opini&atilde;o.

Abra&ccedil;os

2011/2/14 Tiago Peczenyj <a class="moz-txt-link-rfc2396E" href="mailto:tiago.peczenyj@gmail.com">&lt;tiago.peczenyj@gmail.com&gt;</a>:
</pre>
      <blockquote type="cite">
        <pre wrap="">E se o compilador jogasse um warning quando estamos usando algo que
claramente tem undefined behavior (como alguns casos tabelados) ?
Seria o melhor dos dois mundos: ou o programador sabe com certeza o que esta
fazendo ou o compilador/interpretador/etc avisa "hum... danadinho..."

2011/2/14 Blabos de Blebe <a class="moz-txt-link-rfc2396E" href="mailto:blabos@gmail.com">&lt;blabos@gmail.com&gt;</a>
</pre>
        <blockquote type="cite">
          <pre wrap="">
</pre>
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">Enfim, o que quero dizer &eacute; que o Perl tem um imenso potencial de
produzir
c&oacute;digo cheio de Pseudo-undefined Behavior; por que ningu&eacute;m tem
obriga&ccedil;&atilde;o de
saber todas as faces de todos os operadores; isso sem contar as
L&lt;perlvar&gt;.
</pre>
            </blockquote>
          </blockquote>
          <pre wrap="">
Este email tamb&eacute;m tem potencial pra produzir undefined behavior.
Dever&iacute;amos parar de escrever emails por causa disso?

Opa, espere um momento. Como assim um programador n&atilde;o deve saber
exatamente o que ele est&aacute; usando?

&Eacute; claro que o programador *tem* sim que conhecer exatamente como
funciona cada token que ele est&aacute; usando, sen&atilde;o &eacute; melhor ir vender &aacute;gua
de coco na praia.

&Eacute; por isso que certas empresas abrem certas falhas de seguran&ccedil;a em
certos servidores de produ&ccedil;&atilde;o.

O problema &eacute; que Perl &eacute; uma linguagem muito abrangente e concordo com
vc que &eacute; praticamente imposs&iacute;vel memorizar todos os operadores. Mas se
vc *usa*, vc &eacute; obrigado a saber.

O ponto ali&aacute;s nem &eacute; esse. Desconhecer, n&atilde;o implica em undefined
behavior. Implica em n&atilde;o obter o resultado que era esperado, logo a
falha est&aacute; em n&atilde;o ser competente o suficiente para usar esta
ferramenta da linguagem.

J&aacute; em C por exemplo, existem constru&ccedil;&otilde;es que *produzem* undefined
behavior, ou seja fica a cargo de quem implementou o compilador
resolver. Se ele quiser formatar seu disco ao atingir um ponto desses,
ele &eacute; livre pra isso.

Por exemplo, o padr&atilde;o C n&atilde;o define se vari&aacute;veis autom&aacute;ticas (alocadas
na pilha) s&atilde;o ou n&atilde;o inicializadas automaticamente. Da&iacute;, num
compilador do Solaris (o Fernando pode confirmar), todas as vari&aacute;veis
autom&aacute;ticas s&atilde;o inicializadas automaticamente (zero para inteiros). J&aacute;
no gcc n&atilde;o (mant&eacute;m-se o valor que j&aacute; estava na mem&oacute;ria). Ent&atilde;o, voc&ecirc;
escreve um c&oacute;digo no Solaris, compila, testa, homologa e ok. A&iacute; voc&ecirc;
leva esse c&oacute;digo, que est&aacute; dentro do padr&atilde;o, para compilar no gcc e ao
rodar na nova plataforma ele quebra.

Isso sim &eacute; um problema. O mesmo c&oacute;digo, estritamente dentro do padr&atilde;o,
apresentando comportamentos diferentes dependendo da situa&ccedil;&atilde;o.

Oras, o programador experiente tem que conhecer bem a linguagem pra
n&atilde;o cair nessas armadilhas. Se n&atilde;o conhece, n&atilde;o deveria codificar
*profissionalmente*.

&Eacute; como se eu pegasse uma faca e sa&iacute;sse dizendo que sou cirurgi&atilde;o, s&oacute;
porque sei cortar carne. E a&iacute;, posso fazer uma neurocirugia em voc&ecirc;?
Eu tenho potencial pra ser um &oacute;timo cirurgi&atilde;o :)

As pessoas tem que ter mais responsabilidade. Hoje qualquer man&eacute; que
mal consegue encadear uma id&eacute;ia, aprende um if e um for, copia e cola
Perl 3 do forum ultra hacker e sai falando que &eacute; Analista Programador.
&Eacute; foda viu!

De qualquer forma eu acho &oacute;timo esse debate com pontos de vistas
diferentes. Ningu&eacute;m &eacute; dono da verdade.

Abra&ccedil;os

2011/2/14 Stanislaw Pusep <a class="moz-txt-link-rfc2396E" href="mailto:creaktive@gmail.com">&lt;creaktive@gmail.com&gt;</a>:
</pre>
          <blockquote type="cite">
            <pre wrap="">Ali&aacute;s, o que explode o meu c&eacute;rebro &eacute; a frase "These rules look
complicated,
but usually they will do what you want.", a respeito do "given/when",
tamb&eacute;m
em L&lt;perlsyn&gt; ;)

ABS()



2011/2/14 Stanislaw Pusep <a class="moz-txt-link-rfc2396E" href="mailto:creaktive@gmail.com">&lt;creaktive@gmail.com&gt;</a>
</pre>
            <blockquote type="cite">
              <pre wrap="">
Ehehe, vou tentar contextualizar a minha lembran&ccedil;a... Tomo como exemplo
a
"tabela-verdade" do operador ~~ ("smart matching", L&lt;perlsyn&gt;):

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type of Match Implied&nbsp;&nbsp;&nbsp; Matching Code
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ======&nbsp; =====&nbsp;&nbsp;&nbsp;&nbsp; =====================&nbsp;&nbsp;&nbsp; =============
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Any&nbsp;&nbsp;&nbsp;&nbsp; undef&nbsp;&nbsp;&nbsp;&nbsp; undefined&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !defined $a

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Any&nbsp;&nbsp;&nbsp;&nbsp; Object&nbsp;&nbsp;&nbsp; invokes ~~ overloading on $object, or dies

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hash&nbsp;&nbsp;&nbsp; CodeRef&nbsp;&nbsp; sub truth for each key[1] !grep {
!$b-&gt;($_) }
keys %$a
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Array&nbsp;&nbsp; CodeRef&nbsp;&nbsp; sub truth for each elt[1] !grep {
!$b-&gt;($_) }
@$a
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Any&nbsp;&nbsp;&nbsp;&nbsp; CodeRef&nbsp;&nbsp; scalar sub truth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $b-&gt;($a)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hash&nbsp;&nbsp;&nbsp; Hash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hash keys identical (every key is found in
both hashes)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Array&nbsp;&nbsp; Hash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hash slice existence&nbsp;&nbsp;&nbsp;&nbsp; grep { exists
$b-&gt;{$_} } @$a
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Regex&nbsp;&nbsp; Hash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hash key grep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grep /$a/, keys
%$b
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; undef&nbsp;&nbsp; Hash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; always false (undef can't be a key)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Any&nbsp;&nbsp;&nbsp;&nbsp; Hash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hash entry existence&nbsp;&nbsp;&nbsp;&nbsp; exists $b-&gt;{$a}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hash&nbsp;&nbsp;&nbsp; Array&nbsp;&nbsp;&nbsp;&nbsp; hash slice existence&nbsp;&nbsp;&nbsp;&nbsp; grep { exists
$a-&gt;{$_} } @$b
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Array&nbsp;&nbsp; Array&nbsp;&nbsp;&nbsp;&nbsp; arrays are comparable[2]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Regex&nbsp;&nbsp; Array&nbsp;&nbsp;&nbsp;&nbsp; array grep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grep /$a/, @$b
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; undef&nbsp;&nbsp; Array&nbsp;&nbsp;&nbsp;&nbsp; array contains undef&nbsp;&nbsp;&nbsp;&nbsp; grep !defined,
@$b
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Any&nbsp;&nbsp;&nbsp;&nbsp; Array&nbsp;&nbsp;&nbsp;&nbsp; match against an array element[3]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grep $a ~~ $_,
@$b

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hash&nbsp;&nbsp;&nbsp; Regex&nbsp;&nbsp;&nbsp;&nbsp; hash key grep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grep /$b/, keys
%$a
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Array&nbsp;&nbsp; Regex&nbsp;&nbsp;&nbsp;&nbsp; array grep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grep /$b/, @$a
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Any&nbsp;&nbsp;&nbsp;&nbsp; Regex&nbsp;&nbsp;&nbsp;&nbsp; pattern match&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $a =~ /$b/

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object&nbsp; Any&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invokes ~~ overloading on $object, or
falls
back:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Any&nbsp;&nbsp;&nbsp;&nbsp; Num&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; numeric equality&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $a == $b
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Num&nbsp;&nbsp;&nbsp;&nbsp; numish[4] numeric equality&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $a == $b
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; undef&nbsp;&nbsp; Any&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; undefined&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !defined($b)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Any&nbsp;&nbsp;&nbsp;&nbsp; Any&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string equality&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $a eq $b

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 - empty hashes or arrays will match.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 - that is, each element smart-matches the element of same
index
in the
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; other array. [3]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 - If a circular reference is found, we fall back to
referential
equality.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 - either a real number, or a string that looks like a number

Olha, n&atilde;o sei quanto aos outros participantes da lista, mas eu
simplesmente n&atilde;o consigo me ater a todos esses detalhes
:(
Ent&atilde;o nunca uso esse operador que me confunde (PARA MIM, &eacute; um
"Undefined
Behavior"), preferindo fazer "&agrave; moda antiga" (&uacute;ltima coluna). Enfim,
sou
desses caras que enchem qqer opera&ccedil;&atilde;o de ()'s, tipo: ((($x / $y) - $z)
</pre>
              <blockquote type="cite">
                <pre wrap="">0).
</pre>
              </blockquote>
              <pre wrap="">Enfim, o que quero dizer &eacute; que o Perl tem um imenso potencial de
produzir
c&oacute;digo cheio de Pseudo-undefined Behavior; por que ningu&eacute;m tem
obriga&ccedil;&atilde;o de
saber todas as faces de todos os operadores; isso sem contar as
L&lt;perlvar&gt;.

ABS()



2011/2/14 Blabos de Blebe <a class="moz-txt-link-rfc2396E" href="mailto:blabos@gmail.com">&lt;blabos@gmail.com&gt;</a>
</pre>
              <blockquote type="cite">
                <pre wrap="">
Oras, isso me lembra

<a class="moz-txt-link-freetext" href="http://www.ioccc.org/1987/wall.c">http://www.ioccc.org/1987/wall.c</a>

Uma coisa &eacute; voc&ecirc; usar isso em um golf, outra &eacute; usar em c&oacute;digo de
produ&ccedil;&atilde;o.

Tem gente que empeteca o c&oacute;digo com meia d&uacute;zia de regexp e se ahca 'O
Hackerz&atilde;o'.

A maior parte dos bugs (com os quais estou lidando agora, por
exemplo), teria sido evitada se fossem respeitados os padr&otilde;es m&iacute;nimos
de boas pr&aacute;ticas. Coisa que qualquer estagi&aacute;rio *deveria* sair da
escolinha sabendo.

Abra&ccedil;os

2011/2/14 Stanislaw Pusep <a class="moz-txt-link-rfc2396E" href="mailto:creaktive@gmail.com">&lt;creaktive@gmail.com&gt;</a>:
</pre>
                <blockquote type="cite">
                  <pre wrap="">N&atilde;o sei pq, mas lembrei da seguinte sintaxe, compil&aacute;vel em Perl:

-f&gt;@+?*&lt;.-&amp;'_:$#/%!

ABS()



2011/2/14 Blabos de Blebe <a class="moz-txt-link-rfc2396E" href="mailto:blabos@gmail.com">&lt;blabos@gmail.com&gt;</a>
</pre>
                  <blockquote type="cite">
                    <pre wrap="">
Bom dia,

Sem querer entrar em flames, ou no m&eacute;rito da discuss&atilde;o, que tomo
apenas como exemplo.

A thread abaixo &eacute; uma discuss&atilde;o que est&aacute; acontecendo na principal
lista de C++ brasileira, sobre undefined behavior.




<a class="moz-txt-link-freetext" href="http://groups.google.com/group/ccppbrasil/browse_thread/thread/9b9a7be45917095e#">http://groups.google.com/group/ccppbrasil/browse_thread/thread/9b9a7be45917095e#</a>

Notem como o Undefined behavior deste exemplo em particular pode
ser
resolvido com 'codifica&ccedil;&atilde;o elegante'. Ok, o assunto era outro e foi
s&oacute;
um exemplo r&aacute;pido, mas levantou a discuss&atilde;o que est&aacute; acontecendo
at&eacute;
agora.

A maioria dos 'Undefined Behaviors' das linguagens de programa&ccedil;&atilde;o
que
conhe&ccedil;o (n&atilde;o s&atilde;o muitos) s&atilde;o casos espec&iacute;ficos, incomuns, bem
documentados, bem avisados, normalmente abertos por 'depender da
implementa&ccedil;&atilde;o' e invocados por c&oacute;digo porco de programadores
meia-boca
(n&atilde;o que este caso de *exemplo* seja um).

&Eacute; claro, nenhuma linguagem &eacute; perfeita (exceto lisp), mas elas
possuem
especifica&ccedil;&otilde;es, mais abrangentes ou menos abrangentes. Por isso,
n&atilde;o
importa a linguagem, ou voc&ecirc; se aprofunda e aprende, ou mais cedo
ou
mais tarte, vai acabar caindo em alguma dessas asrmadilhas.

Na minha opini&atilde;o, C tem mais armadilhas e/ou hacks que precisam de
um
pouco mais de conhecimento de arquitetura de computadores para
escapar
do que Perl, enquanto Perl tem outros tipos de armadilhas.

Entenda armadilha aqui como "algo que eu imaginava de um jeito, mas
aconteceu de outro", independente da expectativa ser razo&aacute;vel ou
n&atilde;o.

O neg&oacute;cio &eacute; que como Perl &eacute; mais f&aacute;cil de lidar do que C, voc&ecirc;
alcan&ccedil;a
as armadilhas de Perl mais cedo do que conseguiria caminhar em C
para
alcan&ccedil;ar as suas, logo, Perl parece mais imprevis&iacute;vel.

Abra&ccedil;os
=begin disclaimer
&nbsp; Sao Paulo Perl Mongers: <a class="moz-txt-link-freetext" href="http://sao-paulo.pm.org/">http://sao-paulo.pm.org/</a>
&nbsp;SaoPaulo-pm mailing list: <a class="moz-txt-link-abbreviated" href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a>
&nbsp;L<a class="moz-txt-link-rfc2396E" href="http://mail.pm.org/mailman/listinfo/saopaulo-pm">&lt;http://mail.pm.org/mailman/listinfo/saopaulo-pm&gt;</a>
=end disclaimer
</pre>
                  </blockquote>
                  <pre wrap="">

=begin disclaimer
&nbsp; Sao Paulo Perl Mongers: <a class="moz-txt-link-freetext" href="http://sao-paulo.pm.org/">http://sao-paulo.pm.org/</a>
&nbsp;SaoPaulo-pm mailing list: <a class="moz-txt-link-abbreviated" href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a>
&nbsp;L<a class="moz-txt-link-rfc2396E" href="http://mail.pm.org/mailman/listinfo/saopaulo-pm">&lt;http://mail.pm.org/mailman/listinfo/saopaulo-pm&gt;</a>
=end disclaimer


</pre>
                </blockquote>
                <pre wrap="">=begin disclaimer
&nbsp; Sao Paulo Perl Mongers: <a class="moz-txt-link-freetext" href="http://sao-paulo.pm.org/">http://sao-paulo.pm.org/</a>
&nbsp;SaoPaulo-pm mailing list: <a class="moz-txt-link-abbreviated" href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a>
&nbsp;L<a class="moz-txt-link-rfc2396E" href="http://mail.pm.org/mailman/listinfo/saopaulo-pm">&lt;http://mail.pm.org/mailman/listinfo/saopaulo-pm&gt;</a>
=end disclaimer
</pre>
              </blockquote>
              <pre wrap="">
</pre>
            </blockquote>
            <pre wrap="">

=begin disclaimer
&nbsp; Sao Paulo Perl Mongers: <a class="moz-txt-link-freetext" href="http://sao-paulo.pm.org/">http://sao-paulo.pm.org/</a>
&nbsp;SaoPaulo-pm mailing list: <a class="moz-txt-link-abbreviated" href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a>
&nbsp;L<a class="moz-txt-link-rfc2396E" href="http://mail.pm.org/mailman/listinfo/saopaulo-pm">&lt;http://mail.pm.org/mailman/listinfo/saopaulo-pm&gt;</a>
=end disclaimer


</pre>
          </blockquote>
          <pre wrap="">=begin disclaimer
&nbsp; Sao Paulo Perl Mongers: <a class="moz-txt-link-freetext" href="http://sao-paulo.pm.org/">http://sao-paulo.pm.org/</a>
&nbsp;SaoPaulo-pm mailing list: <a class="moz-txt-link-abbreviated" href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a>
&nbsp;L<a class="moz-txt-link-rfc2396E" href="http://mail.pm.org/mailman/listinfo/saopaulo-pm">&lt;http://mail.pm.org/mailman/listinfo/saopaulo-pm&gt;</a>
=end disclaimer
</pre>
        </blockquote>
        <pre wrap="">


--
Tiago B. Peczenyj
Linux User #405772

<a class="moz-txt-link-freetext" href="http://pacman.blog.br">http://pacman.blog.br</a>

=begin disclaimer
&nbsp; Sao Paulo Perl Mongers: <a class="moz-txt-link-freetext" href="http://sao-paulo.pm.org/">http://sao-paulo.pm.org/</a>
&nbsp;SaoPaulo-pm mailing list: <a class="moz-txt-link-abbreviated" href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a>
&nbsp;L<a class="moz-txt-link-rfc2396E" href="http://mail.pm.org/mailman/listinfo/saopaulo-pm">&lt;http://mail.pm.org/mailman/listinfo/saopaulo-pm&gt;</a>
=end disclaimer


</pre>
      </blockquote>
      <pre wrap="">=begin disclaimer
   Sao Paulo Perl Mongers: <a class="moz-txt-link-freetext" href="http://sao-paulo.pm.org/">http://sao-paulo.pm.org/</a>
 SaoPaulo-pm mailing list: <a class="moz-txt-link-abbreviated" href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a>
 L<a class="moz-txt-link-rfc2396E" href="http://mail.pm.org/mailman/listinfo/saopaulo-pm">&lt;http://mail.pm.org/mailman/listinfo/saopaulo-pm&gt;</a>
=end disclaimer
</pre>
    </blockquote>
  </body>
</html>