Latest web development tutorials

pacotes Perl e módulos

Perl Cada pacote tem um símbolo de sintaxe separado definição da tabela é a seguinte:

package mypack;

Esta declaração define um pacote chamadomypack em nome de todas as variáveis e sub-rotinas definidas a seguir são armazenados na tabela de símbolo associado com o pacote, o pacoteaté encontrar uma outra indicação até agora.

Cada tabela símbolo tem seu próprio conjunto de variáveis, sub-rotinas, cada nome de grupo não é relevante, para que possa utilizar o mesmo nome de variável em pacotes diferentes, que representam variáveis ​​diferentes.

Acesso a partir de um pacote para outro variável de pacote, você pode especificar o "nome do pacote + dois pontos duplos (: :) + nome da variável" abordagem.

Armazenando variáveis e nomes de sub-rotina símbolo padrão tabela associada com o pacote é chamadomain-ligados.Se o programa é definido em outros pacotes, quando quiser voltar a utilizar a tabela de símbolos padrão, você pode voltar a atribuir o pacote principal:

package main;

Assim, o próximo programa, como se nunca definiu pacotes, variáveis ​​e nomes de sub-rotina como o armazenamento de costume.

O seguinte arquivo de exemplo tem pacote principal e Foo.__PACKAGE__ Variável especial para nomes de pacotes de saída:

#!/usr/bin/perl

#  main 包
$i = 1; 
print "包名 : " , __PACKAGE__ , " $i\n"; 

package Foo;
#  Foo 包
$i = 10; 
print "包名 : " , __PACKAGE__ , " $i\n"; 

package main;
# 重新指定 main 包
$i = 100; 
print "包名 : " , __PACKAGE__ , " $i\n"; 
print "包名: " , __PACKAGE__ ,  " $Foo::i\n"; 

1;

O programa acima, a saída é:

包名 : main 1
包名 : Foo 10
包名 : main 100
包名: main 10

BEGIN e módulos FIM

linguagem Perl fornece duas palavras-chave: início, fim. Eles podem ser um conjunto separado de scripts que executar antes que o programa é executado ou o corpo após a execução.

Sintaxe é como se segue:

BEGIN { ... }
END { ... }
BEGIN { ... }
END { ... }
  • Cada blocoBEGIN, mas executado antes de outros comandos executados após o script Perl carregado e compilado.

  • Cada blocoEND das demonstrações executado antes do intérprete é encerrado.

  • BEGIN e bloco ENDé particularmente útil quando você cria um módulo Perl.

Se você não entender grande, podemos ver exemplos:

#!/usr/bin/perl

package Foo;
print "Begin 和 Block 实例\n";

BEGIN { 
    print "这是 BEGIN 语句块\n" 
}

END { 
    print "这是 END 语句块\n" 
}

1;

O programa acima, a saída é:

这是 BEGIN 语句块
Begin 和 Block 实例
这是 END 语句块

O que é um módulo Perl?

Perl5 com o pacote Perl para criar um módulo.

módulo Perl é um pacote reutilizável, o nome do módulo e o mesmo nome do pacote, extensão de arquivo definido para.pm.

Abaixo nós definimos uma Foo.pm módulo, código da seguinte forma:

#!/usr/bin/perl

package Foo;
sub bar { 
   print "Hello $_[0]\n" 
}

sub blat { 
   print "World $_[0]\n" 
}
1;

Perl módulos respeitantes a observar o seguinte:

  • Função euso requerum módulo de carga.

  • @INC Perl é uma matriz interna especial que contém o caminho do diretório para a localização das rotinas de biblioteca se encontra.

  • exigem e usea função chama a funçãoevalpara executar código.

  • End1; execução retorna TRUE, esta é uma obrigação, caso contrário, ele retornará um erro.


Requerem o uso e função

Módulo pode ser invocada pela funçãorequer o seguinte:

#!/usr/bin/perl

require Foo;

Foo::bar( "a" );
Foo::blat( "b" );

Você também pode usar a função para se referir a:

<pre>
#!/usr/bin/perl

use Foo;

bar( "a" );
blat( "b" );

Notamos a necessidade de exigir uma referência à função nome especificado pacote, e não precisam de usar, a principal diferença entre os dois é:

  • 1, exigem para o carregamento de módulo ou programa perl (sufixo .pm pode ser omitido, mas deve .pl)
  • 2, a declaração utilização Perl é compilado quando introduzidos, exigem tempo de execução é introduzido
  • 3, Perl utilizam a introdução do módulo, mas também a introdução do módulo de sub-módulo. E não pode exigir a introdução para o re-declaração
  • 4, a utilização está a olhar para o @INC padrão atual no interior, uma vez que o módulo não está nas palavras @INC com uso não é introduzido, mas podem exigir um caminho especificado
  • 5, módulo USE referenciada, se o nome do módulo contém :: dupla cólon, cólon vai funcionar como um separador de caminho, o equivalente do Unix / ou sob Windows \. Tais como:

    use MyDirectory::MyModule

Você pode exportar uma lista de símbolos a partir do módulo adicionando a seguinte instrução para usar módulos:

require Exporter;
@ISA = qw(Exporter);

@EXPORT Matriz contém variáveis ​​e funções derivadas do nome padrão:

package Module;

require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(bar blat);  # 默认导出的符号

sub bar { print "Hello $_[0]\n" }
sub blat { print "World $_[0]\n" }
sub splat { print "Not $_[0]\n" }  # Not exported!

1;

Criar um módulo Perl

Você pode facilmente criar um módulo de distribuição Perl Perl vem com um h2xs ferramenta.

Você pode digitar na linha de comando h2xs modo de olhar para sua lista de parâmetros.

sintaxe h2xs:

$ h2xs -AX -n  ModuleName

Parâmetro Descrição:

  • -A Mecanismo autoload Ignorado

  • -X Ignorado elemento XS

  • -n Especifica o nome da extensão

Por exemplo, se seu arquivoPerson.pm módulo, use o seguinte comando:

$ h2xs -AX -n Person

A saída do programa vontade acima:

Writing Person/lib/Person.pm
Writing Person/Makefile.PL
Writing Person/README
Writing Person/t/Person.t
Writing Person/Changes
Writing Person/MANIFEST

Pessoa sob o diretório você pode ver os diretórios recém-adicionados e arquivos Explicação:

  • README: Este arquivo contém informações sobre a instalação, dependências do módulo, informações sobre direitos autorais, e assim por diante.

  • Mudanças: Este arquivo de log de alterações como seu arquivo de projeto (changelog).

  • Makefile.PL: Este é o construtor padrão Perl Makefile. Usado para criar um arquivo Makefile.PL para compilar o módulo.

  • MANIFESTO: Este arquivo é usado para construir automaticamente o tipo tar.gz de distribuição versão do módulo. Então você pode colocar seu módulo CPAN ser publicado ou distribuído para os outros. Ele contém uma lista de todos os seus arquivos neste projeto.

  • Person.pm: Este é o principal arquivo de módulo que contém o código para o seu manipulador de mod_perl (código do manipulador).

  • Person.t: para este módulo alguns scripts de teste. Por padrão, ele está apenas verificando módulo carregado, você pode adicionar um pouco de nova unidade de teste.

  • / T: arquivo de teste

  • lib /: diretório de armazenamento de origem real

Você pode usar o comando tar (Linux on) para o diretório acima empacotado como Person.tar.gz.


Instalar módulos Perl

Podemos apenasPerson.tar.gz arquivo compactado para descomprimir a instalação, execute os seguintes passos:

tar xvfz Person.tar.gz
cd Person
perl Makefile.PL
make
make install

Primeira execução "perl Makefile.PL" no diretório atual gerado Makefile;

Em seguida, execute "make" para compilar e criar o arquivo de biblioteca necessária;

Seguido por "fazer teste" teste de compilar os resultados estão corretos; a última execução "make install" para instalar os arquivos de biblioteca para o diretório do sistema, acabando assim com todo o processo de compilação.