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$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 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