Separando seu código em módulos no Perl
Publicado por Daniel Vinciguerra (última atualização em 31/03/2016)
[ Hits: 3.477 ]
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
Script para adicionar sites ao Squid
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Arch Linux - Guia para Iniciantes (2)
Problemas ao instalar o PHP (11)
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)