Cada pacote em Perl possui uma tabela de símbolos separada e a sintaxe de definição é:
pacote meupacote;
Esta instrução define um pacote chamado mypack . Os nomes de todas as variáveis e sub-rotinas definidas posteriormente são armazenados na tabela de símbolos associada ao pacote até que outra instrução de pacote seja encontrada.
Cada tabela de símbolos possui seu próprio conjunto de nomes de variáveis e sub-rotinas. Cada conjunto de nomes não está relacionado, portanto, o mesmo nome de variável pode ser usado em pacotes diferentes para representar variáveis diferentes.
Para acessar as variáveis de outro pacote de um pacote, você pode especificá-lo por "nome do pacote + dois pontos duplos (::) + nome da variável".
A tabela de símbolos padrão que armazena os nomes de variáveis e sub-rotinas está associada ao pacote denominado main . Se outros pacotes estiverem definidos no programa e você quiser voltar a usar a tabela de símbolos padrão, poderá especificar novamente o pacote principal:pacote principal;
Desta forma, o programa seguinte agirá como se o pacote nunca tivesse sido definido, e os nomes das variáveis e sub-rotinas serão armazenados normalmente.
Os arquivos no exemplo a seguir são pacotes main e Foo. A variável especial __PACKAGE__ é usada para gerar o nome do pacote:
Executando o programa acima, o resultado de saída é:
Nome do pacote: main 1 Nome do pacote: Foo 10 Nome do pacote: main 100 Nome do pacote: main 10
A linguagem Perl fornece duas palavras-chave: BEGIN e END. Cada um deles pode conter um conjunto de scripts para execução antes ou depois da execução do corpo do programa.
O formato da sintaxe é o seguinte:
INÍCIO { ... } FIM { ... } INÍCIO { ... } FIM { ... }
Cada módulo BEGIN é executado após o script Perl ser carregado e compilado, mas antes de outras instruções serem executadas.
Cada bloco de instrução END é executado antes da saída do interpretador.
Os blocos de instrução BEGIN e END são particularmente úteis ao criar módulos Perl.
Se você ainda não entendeu, podemos ver um exemplo:
Executando o programa acima, o resultado de saída é:
Este é o bloco de instrução BEGIN. Este é o bloco de instrução END.
No Perl5, pacotes Perl são usados para criar módulos.
Um módulo Perl é um pacote reutilizável. O nome do módulo é igual ao nome do pacote e o sufixo do arquivo definido é .pm .
Abaixo definimos um módulo Foo.pm, o código é o seguinte:
Há algumas coisas a serem observadas sobre módulos em Perl:
As funções require e use carregarão um módulo.
@INC é um array especial construído em Perl que contém o caminho do diretório para a localização das rotinas da biblioteca.
As funções require e use chamam a função eval para executar o código.
1 no final; a execução retorna TRUE, o que é obrigatório, caso contrário um erro será retornado.
Os módulos podem ser chamados através da função require , conforme mostrado abaixo:
Também pode ser referenciado através da função use:
Percebemos que a referência require precisa usar o nome do pacote para especificar a função, mas a referência use não. A principal diferença entre as duas é:
1. require é usado para carregar o módulo ou programa perl (o sufixo .pm pode ser omitido, mas .pl deve estar presente)
2. A instrução use Perl é introduzida em tempo de compilação e o require é introduzido em tempo de execução.
3. Quando o uso de Perl introduz um módulo, ele também introduz o submódulo do módulo. No entanto, require não pode ser introduzido e deve ser redeclarado
4. USE é pesquisado no padrão atual @INC. Uma vez que o módulo não está em @INC, ele não pode ser introduzido usando USE, mas require pode especificar o caminho.
5. Quando USE se refere a um módulo, se o nome do módulo contiver dois pontos duplos ::, os dois pontos duplos serão usados como separador de caminho, o que equivale a / no Unix ou no Windows. como:
use MeuDiretório::MeuModule
Os símbolos de lista podem ser exportados do módulo use adicionando a seguinte instrução:
require Exportador;@ISA = qw(Exportador);
O array @EXPORT contém os nomes das variáveis e funções exportadas por padrão:
módulo de pacote;require Exportador;@ISA = qw(Exportador);@EXPORT = qw(bar blat); #Símbolos exportados padrão sub bar { print "Hello $_[0]n" }sub blat { print "World $ _ [0]n" }sub splat { print "Não $_[0]n" } # Não exportado!1;
É fácil criar um módulo Perl através da ferramenta h2xs que acompanha a distribuição Perl.
Você pode digitar h2xs no modo de linha de comando para ver sua lista de parâmetros.
formato de sintaxe h2xs:
$ h2xs -AX -n Nome do Módulo
Descrição do parâmetro:
-A ignora o mecanismo de carregamento automático
-X ignora elementos XS
-n especifica o nome do módulo de extensão
Por exemplo, se o seu módulo estiver no arquivo Person.pm , use o seguinte comando:
$ h2xs -AX -n Pessoa
A execução do programa acima resultará:
Escrevendo Person/lib/Person.pmWriting Person/Makefile.PLWriting Person/READMEWriting Person/t/Person.tWriting Person/ChangesWriting Person/MANIFEST
No diretório Person, você pode ver os diretórios recém-adicionados e as descrições dos arquivos:
LEIA-ME: Este arquivo contém algumas informações de instalação, dependências de módulos, informações de direitos autorais, etc.
Mudanças: Este arquivo serve como arquivo de changelog do seu projeto.
Makefile.PL: Este é o construtor Perl Makefile padrão. Usado para criar um arquivo Makefile.PL para compilar o módulo.
MANIFESTO: Este arquivo é usado para construir automaticamente a distribuição da versão do módulo do tipo tar.gz. Desta forma, você pode levar seu módulo ao CPAN e publicá-lo ou distribuí-lo para terceiros. Ele contém uma lista de todos os arquivos que você possui neste projeto.
Person.pm: Este é o arquivo do módulo principal que contém o código do manipulador mod_perl.
Person.t: Alguns scripts de teste para este módulo. Por padrão, ele apenas verifica o carregamento do módulo, você pode adicionar algumas novas unidades de teste.
t/: arquivo de teste
lib/: diretório onde o código fonte real está armazenado
Você pode usar o comando tar (no Linux) para empacotar o diretório acima em Person.tar.gz.
Podemos descompactar e instalar o arquivo Person.tar.gz que acabamos de compactar. As etapas são as seguintes:
tar xvfz Person.tar.gzcd Personperl Makefile.PLmakemake instalar
Primeiro execute "perl Makefile.PL" para gerar o Makefile no diretório atual;
Em seguida, execute "make" para compilar e criar os arquivos de biblioteca necessários;
Em seguida, use "make test" para testar se o resultado da compilação está correto; finalmente execute "make install" para instalar o arquivo da biblioteca no diretório do sistema e todo o processo de compilação termina.