summaryrefslogtreecommitdiffhomepage
path: root/es-es/perl-es.html.markdown
blob: 4f0c26c109f5d313ceebc970784f3bcbbb462d88 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
---
name: perl
category: language
language: perl
filename: learnperl-es.pl
contributors:
    - ["Korjavin Ivan", "http://github.com/korjavin"]
translators:
    - ["Francisco Gomez", "http://github.com/frncscgmz"]
lang: es-es
---

Perl 5 es un lenguaje de programación altamente capaz, rico en características con mas de 25 años de desarrollo.

Perl 5 corre en mas de 100 plataformas desde portales hasta mainframes y es adecuado para realizar prototipos rápidos hasta desarrollar proyectos a gran escala.

```perl
# Comentarios de una sola linea con un carácter hash.

#### Tipos de variables en Perl

# Las variables comienzan con el símbolo $.
# Un nombre de variable valido empieza con una letra o un guión bajo,
# seguido por cualquier numero de letras, números o guiones bajos.

### Perl tiene tres tipos principales de variables: escalares, arreglos y hashes.

## 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 
# de punto flotante, Perl automáticamente los convertirá como sea requerido.

## 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
#   Un hash representa un conjunto de pares llave/valor:

my %color_fruta = {"manzana","rojo","banana","amarillo"};

#  Puedes usar un espacio en blanco y el operador "=>" para asignarlos mas
#  fácilmente.

my %color_fruta = (
   manzana => "rojo",
   banana  => "amarillo",
   );
# Los escalares, arreglos y hashes están mas documentados en perldata. (perldoc perldata).

# Los tipos de datos mas complejos pueden ser construidos utilizando 
# referencias, las cuales te permiten construir listas y hashes dentro 
# de listas y hashes.

#### Estructuras condicionales y de ciclos

# Perl tiene la mayoría de las estructuras condicionales y de ciclos mas comunes.

if ( $var ) {
     ...
} elsif ( $var eq 'bar' ) { 
     ...
} else {
     ...
}

unless ( condicion ) {
                  ...
              }
# Esto es proporcionado como una version mas fácil de leer que "if (!condición)"

# La post condición al modo Perl
print "Yow!" if $zippy;
print "No tenemos bananas" unless $bananas;

# while
  while ( condicion ) {
                  ...
               }


# for y foreach
for ($i = 0; $i <= $max; $i++) {
                  ...
               }

foreach (@array) {
                   print "Este elemento es $_\n";
               }


#### Expresiones regulares

# El soporte de expresiones regulares en Perl es muy amplio y profundo, y es 
# sujeto a una extensa documentación en perlrequick, perlretut, entre otros.
# Sin embargo, resumiendo:

# Pareo simple
if (/foo/)       { ... }  # verdadero si $_ contiene "foo"
if ($a =~ /foo/) { ... }  # verdadero si $a contiene "foo"

# Substitución simple
$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


#### Archivos e I/O

# Puedes abrir un archivo para obtener datos o escribirlos utilizando la 
# función "open()".

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: $!";

# Es posible leer desde un gestor de archivo abierto utilizando el operador "<>" 
# operador. En contexto escalar leer una sola linea desde el gestor de 
# archivo, y en contexto de lista leer el archivo completo en donde, asigna 
# cada linea a un elemento de la lista.

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;
}

# Ahora podemos utilizar la subrutina al igual que cualquier otra función 
# incorporada:

logger("Tenemos una subrutina logger!");


```

#### Utilizando módulos Perl

Los módulos en Perl proveen una gama de funciones que te pueden ayudar a evitar reinventar la rueda, estas pueden ser descargadas desde CPAN( http://www.cpan.org/ ). Algunos de los módulos mas populares ya están incluidos con la misma distribución de Perl. 

perlfaq contiene preguntas y respuestas relacionadas con muchas tareas comunes, y algunas veces provee sugerencias sobre buenos módulos CPAN para usar.

#### Material de Lectura

     - [perl-tutorial](http://perl-tutorial.org/)
     - [Aprende en www.perl.com](http://www.perl.org/learn.html)
     - [perldoc](http://perldoc.perl.org/)
     - y perl incorporado: `perldoc perlintro`