Separando seu código em módulos no Perl
Publicado por Daniel Vinciguerra (última atualização em 31/03/2016)
[ Hits: 3.811 ]
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}";
}
Exemplo de uso do módulo Term::InKey
Calculo de valor futuro - regrassão linear
Perl OO & Atributos com Class::Accessor
Usando sub/method signatures no Perl
Iniciando desenvolvimento web ágil com Perl (Mojolicious)
Faça suas próprias atualizações de pacotes/programas no Void Linux e torne-se um Contribuidor
Como rodar o Folding@home no Linux
Criando um painel de controle (Dashboard) para seu servidor com o Homepage
O Abismo entre o Código e o Chão: Saltos Tecnológicos e a Exclusão Estrutural no Brasil
Instalar e Configurar a santíssima trindade (PAP) no Void Linux
Pisando no acelerador do Linux Mint: Kernel XanMod, zRAM e Ajustes de Swap
Como compilar kernel no Linux Mint
Lançamento do Brutal DOOM test 6
Consertando o erro no Brave de webgl
Solução para ter de volta as bordas e barra de títulos das janelas em zenity no Debian 13.x
Seno, Coseno, Tangente em CLIPPER (0)
Inserir uma URL num arquvo pelo Ubuntu (CLIPPER) (0)
VMWare Player não conecta na rede nem consigo intercambiar arquivos (1)









