<div>[Perl 5 - Básico] #2 Variáveis</div><div>    Perl é conhecido pelo uso (ou abuso) de caracteres não alfanuméricos</div><div>    no código fonte dos programas. Neste ponto, a linguagem vai muito além</div><div>    dos tradicionais operadores &quot;+&quot;, &quot;*&quot;, &quot;=&quot;, &quot;!&quot; que tudo mundo conhece de</div>
<div>    linguagens como C ou Java.</div><div><br></div><div>    A introdução destes caracteres estranhos já começa pelas variáveis.</div><div>    Variáveis em Perl são claramente marcadas por um símbolo estranho no</div>
<div>    começo:</div><div><br></div><div>        $contador</div><div>        @servidores</div><div>        %nome_de</div><div><br></div><div>        *GLOB</div><div>        &amp;my_sub</div><div><br></div><div>    Os três primeiros exemplos são fundamentais e aparecem o tempo todo em</div>
<div>    programação Perl. $contador é uma variável escalar. @servidores é</div><div>    um *array*. %nome_de é um *hash*. Sobre os outros, podemos falar mais</div><div>    tarde: *GLOB tem a ver com a tabela de símbolos de um programa Perl e</div>
<div>    &amp;my_sub é uma forma exótica de referenciar uma subrotina (que tem os</div><div>    seus usos e suas surpresas).</div><div><br></div><div>    Estes caracteres &#39;$&#39;, &#39;@&#39;, &#39;%&#39;, &#39;*&#39;, &#39;&amp;&#39; são chamados de *sigils* e</div>
<div>    marcam claramente as variáveis no programa fonte.</div><div><br></div><div>        use LWP::Simple qw( get );</div><div><br></div><div>        my $uri = &#39;<a href="http://search.cpan.org/src/GAAS/libwww-perl-5.812/README">http://search.cpan.org/src/GAAS/libwww-perl-5.812/README</a>&#39;;</div>
<div>        # download &#39;README&#39; da distribuição libwww-perl-5.812</div><div>        my $content = get($uri);</div><div><br></div><div>    Neste pedaço de código acima, as variáveis são $uri e $content.</div><div>
    &quot;LWP::Simple&quot; é o nome de um módulo e &quot;get&quot; uma subrotina vinda deste</div><div>    módulo. Não há confusão entre variáveis e módulos/subrotinas.</div><div><br></div><div>    Esta distinção pode parecer redundante, mas tem seus benefícios. Ela</div>
<div>    estabelece *namespaces* (espaços de nomes) diferentes para variáveis</div><div>    escalares, *arrays*, *hashes* e subrotinas/módulos. E um bônus:</div><div>    interpolação em strings sem complicações:</div><div>
<br></div><div>        my $name = &#39;Fulano&#39;;</div><div>        my %bag = { laranja =&gt; 2, pera =&gt; 3 };</div><div>        print &quot;$name tem $bag{laranja} laranjas e $bag{pera} peras\n&quot;;</div><div>        # saída:  Fulano tem 2 laranjas e 3 peras</div>
<div><br></div><div>        Triangulo-pm, 2008-06-11 09:40</div><div><br></div>