Um pacote Perl é uma coleção de código que reside em seu próprio namespace. Módulo Perl é um pacote definido em um arquivo com o mesmo nome do pacote e com extensão .pm . Dois módulos diferentes podem conter uma variável ou uma função com o mesmo nome. Qualquer variável que não esteja contida em nenhum pacote pertence ao pacote principal. Portanto, todas as variáveis ​​em uso, pertencem ao pacote 'principal'. Com a declaração de pacotes adicionais, mantém-se que as variáveis ​​em pacotes diferentes não interferem umas nas outras.
 

Declaração de um Módulo Perl
O nome do módulo deve ser igual ao nome do pacote e ter uma extensão .pm.

Exemplo: Calculator.pm

package Calculator;
  
# Defining sub-routine for Addition
sub addition
{
    # Initializing Variables a & b
    $a = $_[0];
    $b = $_[1];
      
    # Performing the operation
    $a = $a + $b;
      
    # Function to print the Sum
    print "\n***Addition is $a";
}
  
# Defining sub-routine for Subtraction
sub subtraction
{
    # Initializing Variables a & b
    $a = $_[0];
    $b = $_[1];
      
    # Performing the operation
    $a = $a - $b;
      
    # Function to print the difference
    print "\n***Subtraction is $a";
}
1;

Aqui, o nome do arquivo é “Calculator.pm” armazenado no diretório Calculator. Observe que 1; é escrito no final do código para retornar um valor verdadeiro para o interpretador. Perl aceita qualquer coisa que seja verdadeira em vez de 1.
 

Usando um Módulo Perl
Para usar este módulo de calculadora, usamos as funções require ou use. Para acessar uma função ou variável de um módulo,::é usado. Aqui está um exemplo que demonstra o mesmo:

Exemplos: Test.pl

#!/usr/bin/perl
  
# Using the Package 'Calculator'
use Calculator;
  
print "Enter two numbers to add";
  
# Defining values to the variables
$a = 10;
$b = 20;
  
# Subroutine call
Calculator::addition($a, $b);
  
print "\nEnter two numbers to subtract";
  
# Defining values to the variables
$a = 30;
$b = 10;
  
# Subroutine call
Calculator::subtraction($a, $b);

Saída:

 

Acessando um pacote de um diretório diferente
Se um arquivo que acessa o pacote estiver fora do diretório, usamos '::' para informar o caminho do módulo. Por exemplo, o arquivo usando o módulo da calculadora está fora do pacote da calculadora, então escrevemos Calculator::Calculator para carregar o módulo, onde o valor à esquerda de '::' representa o nome do pacote e o valor à direita de '::' representa o módulo Perl nome. Vamos ver um exemplo para entender isso:

Exemplos: Test_out_package.pl fora do diretório Calculator

#!/usr/bin/perl
  
use GFG::Calculator; # Directory_name::module_name
  
print "Enter two numbers to add";
  
# Defining values to the variables
$a = 10;
$b = 20;
  
# Subroutine call
Calculator::addition($a, $b);
  
print "\nEnter two numbers to subtract";
  
# Defining values to the variables
$a = 30;
$b = 10;
  
# Subroutine call
Calculator::subtraction($a, $b);

Saída:

 

Usando variáveis ​​de módulos
Variáveis ​​de pacotes diferentes podem ser usadas declarando-as antes de usar. O exemplo a seguir demonstra isso Exemplos: Message.pm
#!/usr/bin/perl
  
package Message;
  
# Variable Creation
$username;
  
# Defining subroutine
sub Hello
{
  print "Hello $username\n";
}
1;

O arquivo Perl para acessar o módulo é o seguinte
Exemplos: variable.pl

#!/usr/bin/perl
  
# Using Message.pm package
use Message;
  
# Defining value to variable
$Message::username = "ABC";
  
# Subroutine call
Message::Hello();

Saída:

 

Bloco inicial e final
Os blocos BEGIN e END são usados ​​quando queremos executar alguma parte do código no início e outra parte no final. Os códigos escritos em BEGIN {...} são executados no início do script, enquanto os códigos escritos em END {...} são executados no final do script. O programa abaixo demonstra isso: Exemplos: begineg.pl
#!/usr/bin/perl
  
# Predefined BEGIN block
BEGIN
{
    print "In the begin block\n";
}
  
# Predefined END block
END
{
    print "In the end block\n";
}
  
print "Hello Perl;\n";

Saída:

In the begin block
Hello Perl;
In the end block