2013-09-18 22:58:59 +04:00
---
name: perl
category: language
language: perl
filename: learnperl-es.pl
contributors:
2013-09-20 10:23:20 +04:00
- ["Korjavin Ivan", "http://github.com/korjavin"]
translators:
2013-09-18 22:58:59 +04:00
- ["Francisco Gomez", "http://github.com/frncscgmz"]
2014-08-25 00:42:11 +04:00
- ["Joaquín Ferrero", "http://github.com/joaquinferrero"]
2013-09-20 10:23:20 +04:00
lang: es-es
2013-09-18 22:58:59 +04:00
---
2014-08-25 00:42:11 +04:00
Perl 5 es un lenguaje de programación altamente capaz, rico en características, con más de 25 años de desarrollo.
2013-09-18 22:58:59 +04:00
2014-08-25 00:42:11 +04:00
Perl 5 corre en más de 100 plataformas, desde portátiles hasta ordenadores centrales, y es adecuado para realizar desde prototipos rápidos hasta desarrollar proyectos a gran escala.
2013-09-18 22:58:59 +04:00
```perl
2014-08-25 00:42:11 +04:00
# Comentarios de una sola línea con un carácter hash
2013-09-18 22:58:59 +04:00
#### Tipos de variables en Perl
2014-08-25 00:42:11 +04:00
# Las variables comienzan con el símbolo $
# Un nombre de variable válido empieza con una letra o un guión bajo,
# seguido por cualquier número de letras, números o guiones bajos
2013-09-18 22:58:59 +04:00
2014-08-25 00:42:11 +04:00
### Perl tiene tres tipos principales de variables: escalares, arreglos y hashes
2013-09-18 22:58:59 +04:00
## Escalares
# Un escalar representa un solo valor:
my $animal = "camello";
my $respuesta = 42;
# Los valores escalares pueden ser cadenas de caracteres, números enteros o
2014-08-25 00:42:11 +04:00
# de punto flotante; Perl automáticamente los convertirá como sea requerido
2013-09-18 22:58:59 +04:00
## Arreglos
# Un arreglo representa una lista de valores:
my @animales = {"camello","llama","buho"};
my @numeros = {23,42,69};
my @mixto = {"camello",42,1.23};
## Hashes
2014-08-25 00:42:11 +04:00
# Un hash representa un conjunto de pares llave/valor:
2013-09-18 22:58:59 +04:00
my %color_fruta = {"manzana","rojo","banana","amarillo"};
2014-08-25 00:42:11 +04:00
# Puede usar un espacio en blanco y el operador "=>" para asignarlos más fácilmente
2013-09-18 22:58:59 +04:00
my %color_fruta = (
manzana => "rojo",
banana => "amarillo",
);
2014-08-25 00:42:11 +04:00
# Los escalares, arreglos y hashes están más documentados en perldata (perldoc perldata)
2013-09-18 22:58:59 +04:00
2014-08-25 00:42:11 +04:00
# Los tipos de datos más complejos se pueden construir utilizando
# referencias, las cuales le permiten construir listas y hashes dentro
# de listas y hashes
2013-09-18 22:58:59 +04:00
2014-08-25 00:42:11 +04:00
#### Estructuras condicionales y de ciclos
2013-09-18 22:58:59 +04:00
2014-08-25 00:42:11 +04:00
# Perl tiene la mayoría de las estructuras condicionales y de ciclos más comunes
2013-09-18 22:58:59 +04:00
if ( $var ) {
2014-08-25 00:42:11 +04:00
...;
2013-09-18 22:58:59 +04:00
} elsif ( $var eq 'bar' ) {
2014-08-25 00:42:11 +04:00
...;
2013-09-18 22:58:59 +04:00
} else {
2014-08-25 00:42:11 +04:00
...;
2013-09-18 22:58:59 +04:00
}
unless ( condicion ) {
2014-08-25 00:42:11 +04:00
...;
}
# Esto se ofrece como una versión más fácil de leer que "if (!condición)"
2013-09-18 22:58:59 +04:00
2014-08-25 00:42:11 +04:00
# La postcondición al modo Perl:
2013-09-18 22:58:59 +04:00
print "Yow!" if $zippy;
print "No tenemos bananas" unless $bananas;
# while
2014-08-25 00:42:11 +04:00
while ( condicion ) {
...;
}
2013-09-18 22:58:59 +04:00
# for y foreach
for ($i = 0; $i < = $max; $i++) {
2014-08-25 00:42:11 +04:00
...;
}
2013-09-18 22:58:59 +04:00
foreach (@array) {
2014-08-25 00:42:11 +04:00
print "Este elemento es $_\n";
}
2013-09-18 22:58:59 +04:00
#### Expresiones regulares
2014-08-25 00:42:11 +04:00
# El soporte de expresiones regulares en Perl es muy amplio y profundo, y
# está sujeto a una extensa documentación en perlrequick, perlretut, entre otros.
2013-09-18 22:58:59 +04:00
# Sin embargo, resumiendo:
2014-08-25 00:42:11 +04:00
# Coincidencia simple
2013-09-18 22:58:59 +04:00
if (/foo/) { ... } # verdadero si $_ contiene "foo"
if ($a =~ /foo/) { ... } # verdadero si $a contiene "foo"
# Substitución simple
2014-08-25 00:42:11 +04:00
$a =~ s/foo/bar/; # remplaza "foo" con "bar" en $a
$a =~ s/foo/bar/g; # remplaza TODAS LAS INSTANCIAS de "foo" con "bar" en $a
2013-09-18 22:58:59 +04:00
2014-08-25 00:42:11 +04:00
#### Archivos y E/S
2013-09-18 22:58:59 +04:00
2014-08-25 00:42:11 +04:00
# Puede abrir un archivo para obtener datos o escribirlos utilizando la
# función "open()"
2013-09-18 22:58:59 +04:00
open(my $entrada, "< " "entrada.txt") or die "No es posible abrir entrada.txt: $!";
open(my $salida, ">", "salida.txt") or die "No es posible abrir salida.txt: $!";
open(my $log, ">>", "mi.log") or die "No es posible abrir mi.log: $!";
2014-08-25 00:42:11 +04:00
# Es posible leer desde un gestor de archivo abierto utilizando el operador "<>".
# En contexto escalar, leer una sola línea desde el gestor de archivo, y
# en contexto de lista, leer el archivo completo en donde asigna
# cada línea a un elemento de la lista
2013-09-18 22:58:59 +04:00
my $linea = < $entrada>;
my @lineas = < $entrada>;
#### Escribiendo subrutinas
# Escribir subrutinas es fácil:
sub logger {
my $mensajelog = shift;
open my $archivolog, ">>", "mi.log" or die "No es posible abrir mi.log: $!";
print $archivolog $mensajelog;
}
2014-08-25 00:42:11 +04:00
# Ahora podemos utilizar la subrutina al igual que cualquier otra función incorporada:
2013-09-18 22:58:59 +04:00
logger("Tenemos una subrutina logger!");
```
#### Utilizando módulos Perl
2014-08-25 00:42:11 +04:00
Los módulos en Perl proveen de una gama de funciones que le pueden ayudar a evitar reinventar la rueda. Éstas se pueden descargar desde CPAN ( http://www.cpan.org/ ). Algunos de los módulos más populares ya están incluidos con la misma distribución de Perl.
2013-09-18 22:58:59 +04:00
2014-08-25 00:42:11 +04:00
perlfaq contiene preguntas y respuestas relacionadas con muchas tareas comunes, y algunas veces provee sugerencias sobre buenos módulos de CPAN que puede usar.
2013-09-18 22:58:59 +04:00
#### Material de Lectura
- [perl-tutorial ](http://perl-tutorial.org/ )
2014-08-25 00:42:11 +04:00
- [Learn Perl ](http://www.perl.org/learn.html )
2013-09-18 22:58:59 +04:00
- [perldoc ](http://perldoc.perl.org/ )
2014-08-25 00:42:11 +04:00
- y en su propio perl: `perldoc perlintro`