Realmente parece que esta discusão foi bem produtiva, e gostei muito da maneira como você explicou o &#39;contexto&#39;, que na minha opinião é a parte mais importante nesta história. Se você não tiver objeção, vou utilizar esta explicação nos meus treinamento e materiais que estou preparando para os novatos em Perl.<br>

<br>Solli M. Honório<br><br><div class="gmail_quote">Em 24 de março de 2010 00:21, Thiago Glauco <span dir="ltr">&lt;<a href="mailto:thiago@nerdsland.net">thiago@nerdsland.net</a>&gt;</span> escreveu:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

Aiai..<br>
<br>
Este é o tipo da coisa que é tão simples que fica difícil explicar...<br>
<br>
Quando o Perl foi criado, uma das preocupações do Larry era tornar a linguagem parecida com a linguagem humana. Que é influenciada pelo contexto. O contexto é algo que deve estar subentendido pelas duas partes do dialogo.<br>


<br>
<br>
Exemplo de contexto: “Chovem canivetes.” ou “Ele me cortou com um canivete.”<br>
<br>
A palavra canivete varia conforme o contexto. E você sabe disso intuitivamente, culturalmente. É impossível chover canivetes. Mas você sabe que canivetes são perigosos. Então se alguém disser que choveram canivetes, você associa o canivete a uma situação de chuva perigosa, logo muita chuva.<br>


<br>
Agora, vamos levar isto para o Perl.<br>
<br>
$myVar = 1;<br>
$myOtherVar = 2;<br>
$sum = $myVar + $myOtherVar;<br>
<br>
Para o Perl $myVar pode significar a string &#39;1&#39; ou o valor numérico inteiro &#39;1&#39;. O mesmo vale para $myOtherVar. Apartir do momento que você quer somar os valores o Perl para e pensa... Eu não posso somar strings com o operador &#39;+&#39;. Logo o programador quer dizer que os valores são numéricos. Isso é contexto.<br>


<br>
Então, o Perl guarda o valor numérico da soma em $sum.<br>
<br>
Seu código continua...<br>
<br>
print $sum, &quot;\n&quot;;<br>
<br>
E o compilador sabe, pelo contexto, que agora você quer tratar $sum como uma string de texto, e não mais como um número... O contexto, dentro do Perl é como o contexto da linguagem humana. Você deve verificar a situação para saber o real significado das coisas. É estranho no começo mas com a experiência você percebe que é muito mais prático que se dar ao trabalho de explicar ao compilador o que você quer, como no Java, que te obriga a converter toda a hora os valores se isto já está implícito.<br>


<br>
Chegando agora as listas:<br>
<br>
quando você diz ao compilador<br>
<br>
$myVar = @myArr<br>
<br>
O compilador sabe que não pode colocar o array dentro de um Scalar. Mas o compilador também sabe que você não é um idiota. Então ele pensa: &quot;O que existe em um array que pode ser guardado dentro de um escalar? Ah, já sei. O número de elementos do array&quot;.<br>


<br>
se você fizer $myVar = &quot;@myArr&quot; o compilador vai entender que você quer transformar o conteúdo do array em um string por causa das aspas. Isso é contexto. É o que deve estar subentendido na situação.<br>
<br>
se você fizer @myArr = $myVar você criou um array de um elemento.<br>
e ($myVar1, $myVar2) = @myArr então os valores $myArr[0] e $myArr[1] serão associados as variáveis dentro dos parenteses...<br>
<br>
Espero ter ajudado.<br>
<br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
<br>
</blockquote></div><br><br clear="all"><br>-- <br>&quot;o animal satisfeito dorme&quot;. - Guimarães Rosa<br>