Aprende Perl en 10 minutos
Perl es un lenguaje de programación potente y de alto nivel, conocido por sus capacidades de procesamiento de texto y flexibilidad. Desarrollado originalmente para tareas de administración de sistemas, Perl ha evolucionado hasta convertirse en un lenguaje versátil utilizado para desarrollo web, programación de redes y más. Este tutorial cubre los conceptos fundamentales de Perl para ayudarte a aprender el lenguaje rápidamente.
1. Escribe tu primer programa en Perl
Vamos a comenzar con un programa simple. Crea un archivo llamado hello.pl e ingresa el siguiente código:
#!/usr/bin/perl
print "Hello, World!\n";
Guarda el archivo y ejecuta el siguiente comando en la terminal:
perl hello.pl
La salida será:
Hello, World!
Este programa simple demuestra la funcionalidad básica de salida de Perl. La función print se utiliza para mostrar información de texto en la consola.
2. Sintaxis básica
La sintaxis de Perl es flexible y expresiva, con varias características distintivas.
# Este es un comentario
print "Hello, World!\n";
Reglas básicas de sintaxis en Perl:
- Comentarios: Los comentarios de una sola línea comienzan con
# - Sentencias: Terminan con punto y coma
; - Línea Shebang:
#!/usr/bin/perlal inicio de los archivos de script - Variables: Usan caracteres especiales para denotar tipos de variables (
$,@,%) - Comillas de cadena: Se pueden usar comillas simples
'o comillas dobles"
3. Variables y tipos de datos
En Perl, las variables son de tipado dinámico y usan caracteres especiales para denotar su tipo.
Variables escalares (valores individuales):
$name = "Alice";
$age = 25;
$temperature = 36.5;
$is_active = 1; # 1 para verdadero, cadena vacía para falso
Variables de arreglo (listas ordenadas):
@fruits = ("apple", "banana", "cherry");
@numbers = (1, 2, 3, 4, 5);
Variables hash (pares clave-valor):
%person = (
"name" => "John",
"age" => 30,
"city" => "New York"
);
3.1 Variables escalares
Los escalares contienen valores individuales como cadenas, números o referencias.
# Operaciones con cadenas
$text = "Perl Programming";
print length($text); # Longitud de la cadena
print uc($text); # Convertir a mayúsculas
print lc($text); # Convertir a minúsculas
print substr($text, 0, 4); # Extraer subcadena
# Operaciones numéricas
$x = 10;
$y = 3;
print $x + $y; # 13
print $x - $y; # 7
print $x * $y; # 30
print $x / $y; # 3.333...
print $x % $y; # 1 (módulo)
3.2 Variables de arreglo
Los arreglos son colecciones ordenadas que pueden contener múltiples valores.
@colors = ("red", "green", "blue");
# Acceder a elementos del arreglo
print $colors[0]; # "red" (usa $ para un solo elemento)
print $colors[1]; # "green"
print $colors[-1]; # "blue" (último elemento)
# Operaciones con arreglos
push(@colors, "yellow"); # Agregar al final
pop(@colors); # Eliminar del final
shift(@colors); # Eliminar del principio
unshift(@colors, "purple"); # Agregar al principio
# Funciones de arreglo
print scalar(@colors); # Número de elementos
print $#colors; # Último índice
3.3 Variables hash
Los hashes son colecciones de pares clave-valor.
%student = (
name => "Alice",
age => 20,
major => "Computer Science"
);
# Acceder a elementos del hash
print $student{"name"}; # "Alice"
print $student{age}; # 20
# Operaciones con hash
$student{"gpa"} = 3.8; # Agregar nuevo par clave-valor
delete $student{"age"}; # Eliminar par clave-valor
# Funciones de hash
@keys = keys %student; # Obtener todas las claves
@values = values %student; # Obtener todos los valores
4. Flujo de control
Perl proporciona varias sentencias de flujo de control para gestionar la ejecución del programa.
4.1 Sentencias if
La sentencia if evalúa una condición y ejecuta su bloque si la condición es verdadera.
$age = 20;
if ($age >= 18) {
print "Adult\n";
} elsif ($age >= 13) {
print "Teen\n";
} else {
print "Child\n";
}
# if de una línea
print "Adult\n" if $age >= 18;
4.2 Sentencias unless
unless es lo opuesto a if - se ejecuta cuando la condición es falsa.
$age = 15;
unless ($age >= 18) {
print "Not an adult\n";
}
# unless de una línea
print "Not an adult\n" unless $age >= 18;
4.3 Bucles
Perl soporta varias construcciones de bucles.
Bucle while:
$count = 0;
while ($count < 5) {
print "Count: $count\n";
$count++;
}
Bucle for:
for ($i = 0; $i < 5; $i++) {
print "i = $i\n";
}
Bucle foreach:
@fruits = ("apple", "banana", "cherry");
foreach $fruit (@fruits) {
print "Fruit: $fruit\n";
}
# Usando la variable predeterminada $_
foreach (@fruits) {
print "Fruit: $_\n";
}
last y next:
foreach (1..10) {
last if $_ == 5; # Salir del bucle
next if $_ % 2 == 0; # Saltar números pares
print "$_\n"; # Salida: 1, 3
}
5. Subrutinas
Las subrutinas en Perl se definen usando la palabra clave sub.
Definición básica de subrutina:
sub greet {
my $name = shift;
return "Hello, $name!";
}
# Llamar a la subrutina
$message = greet("John");
print $message;
Usando parámetros:
sub add_numbers {
my ($a, $b) = @_;
return $a + $b;
}
$result = add_numbers(5, 3);
print "Sum: $result\n";
Parámetros predeterminados:
sub greet {
my ($name, $greeting) = @_;
$greeting = "Hello" unless defined $greeting;
return "$greeting, $name!";
}
print greet("Alice"); # "Hello, Alice!"
print greet("Bob", "Hi"); # "Hi, Bob!"
6. Expresiones regulares
Perl es famoso por sus poderosas capacidades de expresiones regulares.
Coincidencia básica de patrones:
$text = "Hello, World!";
if ($text =~ /Hello/) {
print "Found 'Hello'\n";
}
# Coincidencia sin distinción de mayúsculas
if ($text =~ /world/i) {
print "Found 'world' (case-insensitive)\n";
}
Sustitución:
$text = "I like cats and cats are cute";
$text =~ s/cats/dogs/g; # Reemplazar todas las ocurrencias
print "$text\n"; # "I like dogs and dogs are cute"
Extraer coincidencias:
$email = "[email protected]";
if ($email =~ /(\w+)@(\w+\.\w+)/) {
print "Username: $1\n"; # "user"
print "Domain: $2\n"; # "example.com"
}
7. Operaciones con archivos
Perl proporciona métodos simples para leer y escribir archivos.
Leer archivos:
# Leer archivo completo
open(my $fh, '<', 'example.txt') or die "Cannot open file: $!";
my $content = do { local $/; <$fh> };
close($fh);
print $content;
# Leer línea por línea
open(my $fh, '<', 'example.txt') or die "Cannot open file: $!";
while (my $line = <$fh>) {
print $line;
}
close($fh);
Escribir archivos:
# Escribir en archivo
open(my $fh, '>', 'output.txt') or die "Cannot open file: $!";
print $fh "Hello, Perl!\n";
close($fh);
# Agregar a archivo
open(my $fh, '>>', 'output.txt') or die "Cannot open file: $!";
print $fh "Appending new content.\n";
close($fh);
8. Funciones integradas
Perl viene con muchas funciones integradas útiles.
Funciones de cadena:
$text = " Perl Programming ";
print length($text); # Longitud de la cadena
print uc($text); # Convertir a mayúsculas
print lc($text); # Convertir a minúsculas
print substr($text, 0, 4); # Extraer subcadena
print index($text, "Prog"); # Encontrar posición de subcadena
Funciones de arreglo:
@numbers = (3, 1, 4, 1, 5, 9, 2);
print join(", ", sort @numbers); # "1, 1, 2, 3, 4, 5, 9"
print join(", ", reverse @numbers); # "2, 9, 5, 1, 4, 1, 3"
# Filtrar arreglo
@filtered = grep { $_ > 3 } @numbers;
print join(", ", @filtered); # "4, 5, 9"
# Transformar arreglo
@doubled = map { $_ * 2 } @numbers;
print join(", ", @doubled); # "6, 2, 8, 2, 10, 18, 4"
Funciones de hash:
%person = (name => "Alice", age => 25, city => "New York");
@keys = keys %person; # Obtener todas las claves
@values = values %person; # Obtener todos los valores
# Verificar si existe una clave
if (exists $person{age}) {
print "Age exists\n";
}
9. Módulos de Perl
Perl tiene un ecosistema rico de módulos disponibles a través de CPAN.
Usar módulos principales:
use strict;
use warnings;
use Data::Dumper;
%data = (name => "Bob", age => 30);
print Dumper(\%data); # Imprimir estructura de datos formateada
Instalar y usar módulos de CPAN:
# Instalar módulo desde CPAN
cpan install JSON
use JSON;
# Analizar JSON
$json_string = '{"name": "Alice", "age": 25}';
$person = decode_json($json_string);
print $person->{name}; # "Alice"
# Generar JSON
$person_hash = { name => "Bob", age => 30 };
$json_output = encode_json($person_hash);
print $json_output; # {"name":"Bob","age":30}
10. Guía de estilo de Perl
Perl tiene convenciones de la comunidad que promueven código limpio y legible.
Indentación: Usa 4 espacios para la indentación.
Nomenclatura de variables:
- Usa nombres descriptivos
- Sigue la convención snake_case
- Usa nombres de variables significativos
Organización del código:
- Usa
use strict;yuse warnings;al inicio de los scripts - Declara variables con
mypara limitar el alcance - Usa nombres de subrutinas significativos
Documentación:
- Usa POD (Plain Old Documentation) para documentar el código
- Incluye comentarios para lógica compleja
La flexibilidad de Perl y sus poderosas capacidades de procesamiento de texto lo convierten en una excelente opción para administración de sistemas, desarrollo web y tareas de procesamiento de datos. Su rico ecosistema de módulos y el fuerte apoyo de la comunidad continúan haciéndolo relevante en entornos de programación modernos.
