Separando seu código em módulos no Perl
Publicado por Daniel Vinciguerra (última atualização em 31/03/2016)
[ Hits: 3.688 ]
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}";
}
Calculo de valor futuro - regrassão linear
Perl OO & Atributos com Class::Accessor
Usando sub/method signatures no Perl
Exemplo de uso do módulo Term::InKey
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Instalação dualboot Windows 11 e Debian 13 (0)
Programa fora de escala na tela do pc (33)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









