Separando seu código em módulos no Perl
Publicado por Daniel Vinciguerra (última atualização em 31/03/2016)
[ Hits: 3.770 ]
Homepage: http://bivee.com.br
Hoje vamos ver como separar nosso código para que a gente possa agrupar vários métodos comuns em um mesmo módulo, facilitando assim a manutenção, refatoração e reaproveitamento dos códigos dos nossos scripts.
O MÓDULO
- Módulos, assim como as classes no Perl, são nomeados através de package (namespace)
- Os módulos Perl podem ter a API no estilo procedural ou orientada a objetos
- metacpan.org/pod/Exporter permite que seus subs seja chamados sem a necessidade de usar o namespace
O módulo que veremos abaixo serve apenas como introdução e é diferente dos módulos que são publicados no CPAN (cpan.org) por diversas questões técnicas. Meu intuito aqui foi introduzir o leitor ao reaproveitamento dos seus códigos e ao princípio de uso de módulos para tornar seu trabalho mais profissional, organizado e para gerar curiosidade sobre a colaboração de códigos em Perl.
Você pode construir módulos com qualquer finalidade, porém quando estiver desenvolvendo em Perl, dê uma passadinha no CPAN e procure pelo modulo que você esta precisando para saber se ninguém já implementou algo parecido e que atenda as suas necessidades.
PRÉ-REQUISITOS
- perl 5.10 ou superior
REFERÊNCIAS
http://perldoc.perl.org/perlmodstyle.html
https://en.wikipedia.org/wiki/Perl_module
EXECUTANDO
$ perl module.pl
#!/usr/bin/env perl
use 5.10.0;
use strict;
use warnings;
# Módulo Calculo
# este modulo pode ser extraido deste arquivo e colocado em um outro arquivo.
# Ex de Arquivo: Calculo.pm
# OBS.: lembre-se de colocar o 1; na ultima linha do arquivo exportado.
package Calculo {
sub somar {
my ($n1, $n2) = @_;
return $n1 + $n2;
}
sub subtrair {
my ($n1, $n2) = @_;
return $n1 - $n2;
}
sub multiplicar {
my ($n1, $n2) = @_;
return $n1 * $n2;
}
sub dividir {
my ($n1, $n2) = @_;
return sprintf "%2.2f", $n1 / $n2;
}
}
# Calculo.pm exportado para outro diretório use:
# use lib 'path/to/lib/';
# Calculo.pm exportado para o mesmo diretório do script use:
# use Calculo;
# OBS.: Lembrando que classes e modulos declarados no mesmo arquivo
# que o script que irá rodar não precisam ser importados com 'use'.
# dados os numeros...
my ($n1, $n2) = (14, 22);
# Chamando a operação de soma do modulo
print_stdout('Soma', Calculo::somar($n1, $n2) );
# Chamando a operação de subtrair do modulo
print_stdout('Subtracao', Calculo::subtrair($n1, $n2) );
# Chamando a operação de multiplicar do modulo
print_stdout('Subtracao', Calculo::multiplicar($n1, $n2) );
# Chamando a operação de dividir do modulo
print_stdout('Subtracao', Calculo::dividir($n1, $n2) );
sub print_stdout {
my ($op, $result) = @_;
say "\nOperacao: ${op}";
say "Calculo entre os numeros ${n1} e ${n2} = ${result}";
}
Usando sub/method signatures no Perl
Perl OO & Atributos com Class::Accessor
Exemplo de uso do módulo Term::InKey
Calculo de valor futuro - regrassão linear
XFCE - quase um Gnome ou Plasma mas muito mais leve
LXQT - funcional para máquinas pererecas e usuários menos exigentes
Instalação do K3s Single-Node com Rancher no Ubuntu 24.04
Usei o NotebookLM para Auditar Logs do Linux
Cinnamon seria a aposta acertada frente às outras interfaces gráficas mais populares?
Samba 4 AD-DC 2026: Como instalar e configurar um Active Directory (via APT-GET)
[Resolvido] Sumiço de redes e micro quedas no iwd/iwgtk (Realtek rtw88)
Como Configurar DNS Reverso (PTR) em Ambientes Linux e Microsoft
Preparando o Ambiente para Administrar o Samba 4 a partir do Windows com RSAT
Problema ao instalar Linux Mint. (1)
Midia de instalação LM-21.3 não inicializa (11)
A diferença entre a fala de um Samuel e a fala de alguém que conhece o... (9)









