Las subrutinas en Perl son bloques de código reutilizables que permiten organizar y modularizar el código. Son similares a las funciones en otros lenguajes de programación. En esta sección, aprenderemos cómo definir, llamar y utilizar subrutinas en Perl.

Contenido

Definición de Subrutinas

Para definir una subrutina en Perl, utilizamos la palabra clave sub seguida del nombre de la subrutina y un bloque de código entre llaves {}.

sub nombre_de_la_subrutina {
    # Código de la subrutina
}

Ejemplo

sub saludar {
    print "¡Hola, Mundo!\n";
}

Llamada a Subrutinas

Para llamar a una subrutina, simplemente escribimos su nombre seguido de paréntesis.

saludar();

Ejemplo Completo

sub saludar {
    print "¡Hola, Mundo!\n";
}

# Llamada a la subrutina
saludar();

Pasar Argumentos a Subrutinas

Podemos pasar argumentos a una subrutina al llamarla. Los argumentos se reciben en la variable especial @_.

sub nombre_completo {
    my ($nombre, $apellido) = @_;
    print "Nombre completo: $nombre $apellido\n";
}

nombre_completo("Juan", "Pérez");

Explicación

  • @_ es una lista especial que contiene los argumentos pasados a la subrutina.
  • my ($nombre, $apellido) = @_; asigna los valores de @_ a las variables $nombre y $apellido.

Valores de Retorno

Las subrutinas pueden devolver valores utilizando la palabra clave return.

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

my $resultado = sumar(3, 4);
print "Resultado: $resultado\n";

Explicación

  • return $a + $b; devuelve la suma de $a y $b.
  • my $resultado = sumar(3, 4); almacena el valor devuelto en la variable $resultado.

Variables Locales y Globales

En Perl, las variables pueden ser locales o globales. Las variables locales se definen utilizando my y solo son accesibles dentro del bloque donde se definen.

my $variable_global = "Soy global";

sub ejemplo {
    my $variable_local = "Soy local";
    print "$variable_local\n";  # Accesible
    print "$variable_global\n"; # Accesible
}

ejemplo();
print "$variable_global\n";     # Accesible
# print "$variable_local\n";    # No accesible, causará un error

Explicación

  • $variable_global es accesible tanto dentro como fuera de la subrutina.
  • $variable_local solo es accesible dentro de la subrutina ejemplo.

Ejemplos Prácticos

Ejemplo 1: Subrutina sin Argumentos

sub mostrar_fecha {
    my $fecha = localtime();
    print "Fecha y hora actual: $fecha\n";
}

mostrar_fecha();

Ejemplo 2: Subrutina con Argumentos

sub multiplicar {
    my ($x, $y) = @_;
    return $x * $y;
}

my $producto = multiplicar(5, 6);
print "Producto: $producto\n";

Ejemplo 3: Subrutina con Variables Locales

my $mensaje = "Mensaje global";

sub cambiar_mensaje {
    my $mensaje = "Mensaje local";
    print "$mensaje\n";
}

cambiar_mensaje();
print "$mensaje\n";

Ejercicios

Ejercicio 1: Crear una Subrutina para Calcular el Factorial

Descripción: Escribe una subrutina llamada factorial que tome un número como argumento y devuelva su factorial.

Código Inicial:

sub factorial {
    my ($n) = @_;
    # Tu código aquí
}

my $resultado = factorial(5);
print "Factorial de 5: $resultado\n";

Solución:

sub factorial {
    my ($n) = @_;
    return 1 if $n == 0;
    return $n * factorial($n - 1);
}

my $resultado = factorial(5);
print "Factorial de 5: $resultado\n";

Ejercicio 2: Crear una Subrutina para Verificar Números Primos

Descripción: Escribe una subrutina llamada es_primo que tome un número como argumento y devuelva 1 si el número es primo y 0 en caso contrario.

Código Inicial:

sub es_primo {
    my ($n) = @_;
    # Tu código aquí
}

my $numero = 7;
if (es_primo($numero)) {
    print "$numero es primo\n";
} else {
    print "$numero no es primo\n";
}

Solución:

sub es_primo {
    my ($n) = @_;
    return 0 if $n < 2;
    for my $i (2 .. sqrt($n)) {
        return 0 if $n % $i == 0;
    }
    return 1;
}

my $numero = 7;
if (es_primo($numero)) {
    print "$numero es primo\n";
} else {
    print "$numero no es primo\n";
}

Conclusión

En esta sección, hemos aprendido cómo definir y utilizar subrutinas en Perl. Hemos cubierto cómo pasar argumentos, devolver valores y manejar variables locales y globales. Las subrutinas son una herramienta poderosa para organizar y modularizar el código, facilitando su mantenimiento y reutilización. Asegúrate de practicar los ejercicios para reforzar los conceptos aprendidos y estar preparado para el siguiente módulo.

© Copyright 2024. Todos los derechos reservados