Separando seu código em módulos no Perl
Publicado por Daniel Vinciguerra (última atualização em 31/03/2016)
[ Hits: 3.571 ]
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
Exemplo de uso do módulo Term::InKey
Perl OO & Atributos com Class::Accessor
Calculo de valor futuro - regrassão linear
Substituir palavras em arquivos
Descritores de Arquivos e Swappiness
tux-gpt - Assistente de IA para o Terminal
Instalação e configuração do Chrony
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
O Que Fazer Após Instalar Ubuntu 25.04
Graduação e certificação Eng. de redes e Eng. Linux[DUVIDA] (0)
Controle do PS5 no Linux Mint funciona? (3)
Autenticação necessária. um aplicativo quer acesso ao chaveiro "c... (1)