En este módulo, aprenderemos sobre los módulos y paquetes en Perl, que son fundamentales para organizar y reutilizar el código. Los módulos y paquetes permiten dividir el código en partes manejables y reutilizables, facilitando la colaboración y el mantenimiento del software.

Contenido

Introducción a los Módulos y Paquetes

¿Qué es un Módulo?

Un módulo en Perl es un archivo que contiene código Perl y que puede ser reutilizado en otros programas. Los módulos permiten encapsular funciones, variables y otros elementos en un solo lugar.

¿Qué es un Paquete?

Un paquete en Perl es una forma de agrupar variables y subrutinas bajo un mismo nombre de espacio. Los paquetes ayudan a evitar conflictos de nombres y a organizar el código de manera lógica.

Creación de un Módulo

Estructura Básica de un Módulo

Un módulo Perl es simplemente un archivo con extensión .pm. Aquí hay un ejemplo básico de un módulo llamado MiModulo.pm:

# MiModulo.pm
package MiModulo;

use strict;
use warnings;

# Exportar funciones
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(saludar);

sub saludar {
    my $nombre = shift;
    return "Hola, $nombre!";
}

1; # El módulo debe terminar con un valor verdadero

Explicación del Código

  • package MiModulo;: Define el nombre del paquete.
  • use strict; y use warnings;: Habilitan las restricciones y advertencias para ayudar a detectar errores.
  • require Exporter;: Importa el módulo Exporter que facilita la exportación de funciones.
  • our @ISA = qw(Exporter);: Indica que el módulo hereda de Exporter.
  • our @EXPORT = qw(saludar);: Especifica las funciones que se exportarán automáticamente.
  • sub saludar { ... }: Define una subrutina llamada saludar.
  • 1;: El módulo debe terminar con un valor verdadero para indicar que se ha cargado correctamente.

Uso de Módulos

Cómo Usar un Módulo en un Script Perl

Para usar un módulo en un script Perl, se utiliza la palabra clave use. Aquí hay un ejemplo de cómo usar el módulo MiModulo:

# script.pl
use strict;
use warnings;
use MiModulo;

my $mensaje = saludar("Mundo");
print "$mensaje\n";

Explicación del Código

  • use MiModulo;: Carga el módulo MiModulo.
  • my $mensaje = saludar("Mundo");: Llama a la función saludar del módulo MiModulo.

Paquetes

Definición de Paquetes

Los paquetes permiten agrupar variables y subrutinas bajo un mismo nombre de espacio. Aquí hay un ejemplo de cómo definir y usar paquetes:

# MiPaquete.pm
package MiPaquete;

use strict;
use warnings;

sub nuevo {
    my $class = shift;
    my $self = {};
    bless $self, $class;
    return $self;
}

sub saludar {
    my $self = shift;
    my $nombre = shift;
    return "Hola, $nombre!";
}

1;

Uso de Paquetes en un Script Perl

# script_paquete.pl
use strict;
use warnings;
use MiPaquete;

my $objeto = MiPaquete->nuevo();
my $mensaje = $objeto->saludar("Mundo");
print "$mensaje\n";

Explicación del Código

  • package MiPaquete;: Define el nombre del paquete.
  • sub nuevo { ... }: Define un constructor para crear objetos.
  • sub saludar { ... }: Define una subrutina que saluda.
  • my $objeto = MiPaquete->nuevo();: Crea un nuevo objeto del paquete MiPaquete.
  • my $mensaje = $objeto->saludar("Mundo");: Llama a la subrutina saludar del objeto.

Ejercicios Prácticos

Ejercicio 1: Crear un Módulo

Crea un módulo llamado Calculadora.pm que tenga funciones para sumar, restar, multiplicar y dividir dos números. Luego, usa este módulo en un script Perl.

Solución

# Calculadora.pm
package Calculadora;

use strict;
use warnings;

require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(sumar restar multiplicar dividir);

sub sumar {
    my ($a, $b) = @_;
    return $a + $b;
}

sub restar {
    my ($a, $b) = @_;
    return $a - $b;
}

sub multiplicar {
    my ($a, $b) = @_;
    return $a * $b;
}

sub dividir {
    my ($a, $b) = @_;
    return $a / $b;
}

1;
# script_calculadora.pl
use strict;
use warnings;
use Calculadora;

print "Suma: ", sumar(10, 5), "\n";
print "Resta: ", restar(10, 5), "\n";
print "Multiplicación: ", multiplicar(10, 5), "\n";
print "División: ", dividir(10, 5), "\n";

Ejercicio 2: Crear un Paquete

Crea un paquete llamado Persona que tenga atributos como nombre y edad, y métodos para obtener y establecer estos atributos. Luego, usa este paquete en un script Perl.

Solución

# Persona.pm
package Persona;

use strict;
use warnings;

sub new {
    my $class = shift;
    my $self = {
        nombre => shift,
        edad => shift,
    };
    bless $self, $class;
    return $self;
}

sub obtener_nombre {
    my $self = shift;
    return $self->{nombre};
}

sub establecer_nombre {
    my $self = shift;
    $self->{nombre} = shift;
}

sub obtener_edad {
    my $self = shift;
    return $self->{edad};
}

sub establecer_edad {
    my $self = shift;
    $self->{edad} = shift;
}

1;
# script_persona.pl
use strict;
use warnings;
use Persona;

my $persona = Persona->new("Juan", 25);
print "Nombre: ", $persona->obtener_nombre(), "\n";
print "Edad: ", $persona->obtener_edad(), "\n";

$persona->establecer_nombre("Carlos");
$persona->establecer_edad(30);

print "Nuevo Nombre: ", $persona->obtener_nombre(), "\n";
print "Nueva Edad: ", $persona->obtener_edad(), "\n";

Conclusión

En este módulo, hemos aprendido sobre los módulos y paquetes en Perl, cómo crearlos y usarlos, y cómo organizan y reutilizan el código de manera eficiente. Los ejercicios prácticos proporcionan una oportunidad para aplicar estos conceptos y reforzar el aprendizaje. En el siguiente módulo, exploraremos Perl Orientado a Objetos, que ampliará aún más nuestras habilidades de programación en Perl.

© Copyright 2024. Todos los derechos reservados