[Triangulo-pm] [Perl - Básico] #2 Variáveis

Adriano Ferreira aferreira em shopzilla.com
Quarta Junho 11 05:43:13 PDT 2008


[Perl - Básico] #2 Variáveis
    Perl é conhecido pelo uso (ou abuso) de caracteres não alfanuméricos no
    código fonte dos programas. Neste ponto, a linguagem vai muito além dos
    tradicionais operadores "+", "*", "=", "!" que tudo mundo conhece de
    linguagens como C ou Java.

    A introdução destes caracteres estranhos já começa pelas variáveis.
    Variáveis em Perl são claramente marcadas por um símbolo estranho no
    começo:

        $contador
        @servidores
        %nome_de

        *GLOB
        &my_sub

    Os três primeiros exemplos são fundamentais e aparecem o tempo todo em
    programação Perl. $contador é uma variável escalar. @servidores é um
    *array*. %nome_de é um *hash*. Sobre os outros, podemos falar mais
    tarde: *GLOB tem a ver com a tabela de símbolos de um programa Perl e
    &my_sub é uma forma exótica de referenciar uma subrotina (que tem os
    seus usos e suas surpresas).

    Estes caracteres '$', '@', '%', '*', '&' são chamados de *sigils* e
    marcam claramente as variáveis no programa fonte.

        use LWP::Simple qw( get );

        my $uri = 'http://search.cpan.org/src/GAAS/libwww-perl-5.812/README';
        # download 'README' da distribuição libwww-perl-5.812
        my $content = get($uri);

    Neste pedaço de código acima, as variáveis são $uri e $content.
    "LWP::Simple" é o nome de um módulo e "get" uma subrotina vinda deste
    módulo. Não há confusão entre variáveis e módulos/subrotinas.

    Esta distinção pode parecer redundante, mas tem seus benefícios. Ela
    estabelece *namespaces* (espaços de nomes) diferentes para variáveis
    escalares, *arrays*, *hashes* e subrotinas/módulos. E um bônus:
    interpolação em strings sem complicações:

        my $name = 'Fulano';
        my %bag = { laranja => 2, pera => 3 };
        print "$name tem $bag{laranja} laranjas e $bag{pera} peras\n";
        # saída:  Fulano tem 2 laranjas e 3 peras



        Triangulo-pm, 2008-06-11 09:40


Mais detalhes sobre a lista de discussão Triangulo-pm