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 {}.
Ejemplo
Llamada a Subrutinas
Para llamar a una subrutina, simplemente escribimos su nombre seguido de paréntesis.
Ejemplo Completo
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$nombrey$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$ay$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 errorExplicación
$variable_globales accesible tanto dentro como fuera de la subrutina.$variable_localsolo es accesible dentro de la subrutinaejemplo.
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.
Curso de Programación en Perl
Módulo 1: Introducción a Perl
Módulo 2: Programación Básica en Perl
Módulo 3: Trabajando con Datos
Módulo 4: Programación Intermedia en Perl
Módulo 5: Programación Avanzada en Perl
- Expresiones Regulares Avanzadas
- Interacción con Bases de Datos usando DBI
- Programación Web con Perl
- Multithreading
