Learn in 10 minutes

Learn in 10 minutes

Aprende Perl en 10 minutos

Programming Language

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/perl al 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; y use warnings; al inicio de los scripts
  • Declara variables con my para 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.