<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 "+", "*", "=", "!" 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> &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> &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 '$', '@', '%', '*', '&' 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 = '<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>';</div>
<div> # download 'README' 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>
"LWP::Simple" é o nome de um módulo e "get" 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 = 'Fulano';</div><div> my %bag = { laranja => 2, pera => 3 };</div><div> print "$name tem $bag{laranja} laranjas e $bag{pera} peras\n";</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>