=encoding utf8

=head1 NOMBRE

perl - El intérprete del lenguaje Perl 5

=head1 SINOPSIS

B<perl> S<[ B<-sTtuUWX> ]>  S<[ B<-hv> ] [ B<-V>[:I<var_config>] ]>     S<[
B<-cw> ] [ B<-d>[B<t>][:I<depurador>] ] [ B<-D>[I<número/lista>] ]>    S<[
B<-pna> ] [ B<-F>I<patrón> ] [ B<-l>[I<octal>] ] [ B<-0>[I<octal/hexadecimal>]
]>  S<[ B<-I>I<dir> ] [ B<-m>[B<->]I<módulo> ] [ B<-M>[B<->]I<'módulo...'> ]
[ B<-f> ]>   S<[ B<-C [I<número/lista>] >]>     S<[ B<-S> ]>    S<[
B<-x>[I<dir>] ]>    S<[ B<-i>[I<extensión>] ]>     S<[ [B<-e>|B<-E>]
I<'comando'> ] [ B<--> ] [ I<archivo_programa> ] [ I<argumento> ]...>

=head1 CÓMO OBTENER AYUDA

El programa F<perldoc> proporciona acceso a toda la documentación incluida en
Perl. Puede obtener más documentación, tutoriales y soporte de la comunidad
en línea en L<http://www.perl.org/>.

Si nunca ha programado en Perl, debe empezar por ejecutar C<perldoc perlintro>
para leer una introducción general para principiantes y aprender a orientarse
por la amplia documentación de Perl. Ejecute C<perldoc perldoc> para ver qué
más puede hacer con <perldoc>.

Para facilitar el acceso, el manual de Perl se ha dividido en varias secciones.

=begin buildtoc

# Porting/pod_lib.pl analiza esta sección, cuyo contenido se usará en
pod/buildtoc, etc.

flag =g  perluniprops perlmodlib perlapi perlintern flag =go perltoc flag =ro
perlcn perljp perlko perltw flag =   perlvms

path perlfaq.*               cpan/perlfaq/lib/ path perlglossary           
cpan/perlfaq/lib/ path perlxs(?:tut|typemap)?  dist/ExtUtils-ParseXS/lib/ path
perldoc                 cpan/Pod-Perldoc/lib/

aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp

=end buildtoc

=head2 Introducción

    perl             Información general sobre Perl (esta sección)
    perlintro        Introducción a Perl para principiantes
    perltoc          Tabla de contenido de la documentación de Perl

=head2 Tutoriales

    perlreftut       Breve introducción a las referencias
    perldsc          Introducción a las estructuras de datos
    perllol          Estructuras de datos: arrays de arrays

    perlrequick      Guía rápida de las expresiones regulares
    perlretut        Tutorial de expresiones regulares

    perlootut        Tutorial de POO para principiantes

    perlperf         Rendimiento y técnicas de optimización

    perlstyle        Guía de estilo

    perlcheat        Referencia rápida de Perl
    perltrap         Trampas para los incautos
    perldebtut       Tutorial de depuración

    perlfaq          Preguntas más frecuentes
      perlfaq1         Preguntas generales sobre Perl
      perlfaq2         Cómo obtener y aprender a utilizar Perl
      perlfaq3         Herramientas de programación
      perlfaq4         Manipulación de datos
      perlfaq5         Archivos y formatos
      perlfaq6         Expresiones regulares
      perlfaq7         Problemas del lenguaje Perl
      perlfaq8         Interacción con el sistema
      perlfaq9         Conexión a redes

=head2 Manual de referencia

    perlsyn          Sintaxis
    perldata         Estructuras de datos
    perlop           Operadores y precedencia
    perlsub          Subrutinas
    perlfunc         Funciones predefinidas
      perlopentut    Tutorial de open()
      perlpacktut    Tutorial de pack() y unpack()
    perlpod          Documentación en texto simple (POD)
    perlpodspec      Especificación del formato POD
    perlpodstyle     Guía de estilo para POD
    perlrun          Ejecución y opciones de ejecución
    perldiag         Mensajes de diagnóstico
    perllexwarn      Advertencias y control de advertencias
    perldebug        Depuración
    perlvar          Variables predefinidas
    perlre           Expresiones regulares: el resto de la historia
    perlrebackslash  Secuencias de escape en expresiones regulares
    perlrecharclass  Clases de caracteres en expresiones regulares
    perlreref        Referencia rápida de expresiones regulares
    perlref          Referencias: el resto de la historia
    perlform         Formatos
    perlobj          Objetos
    perltie          Objetos Perl ocultos en variables simples
      perldbmfilter  Filtros DBM

    perlipc          Comunicación entre procesos
    perlfork         Información sobre fork()
    perlnumber       Semántica de números

    perlthrtut       Tutorial de uso de hilos de ejecución

    perlport         Guía de portabilidad
    perllocale       Compatibilidad con la configuración regional
    perluniintro     Introducción a Unicode
    perlunicode      Compatibilidad con Unicode
    perlunifaq       Preguntas más frecuentes sobre Unicode
    perluniprops     Índice de propiedades de Unicode versión 6.0.0
    perlunitut       Tutorial de Unicode
    perlebcdic       Ejecución de Perl en plataformas EBCDIC

    perlsec          Seguridad

    perlmod          Funcionamiento de un módulo Perl
    perlmodlib       Programación y utilización de módulos Perl
    perlmodstyle     Cómo programar módulos Perl con estilo
    perlmodinstall   Instalación de módulos de CPAN
    perlnewmod       Preparar la distribución de un módulo Perl nuevo
    perlpragma       Programación de un pragma de usuario

    perlutil         Utilidades incluidas en una distribución Perl

    perlfilter       Filtros de código fuente

    perldtrace       Compatibilidad con DTrace

    perlglossary     Glosario

=head2 Componentes e interfaz con el lenguaje C

    perlembed        Formas de integrar Perl en una aplicación C o C++
    perldebguts      Componentes y consejos para la depuración
    perlxstut        Tutorial de XS
    perlxs           Interfaz de programación de aplicaciones XS
    perlxstypemap    Herramientas de conversión de tipos XS C/Perl
    perlclib         Sustitutos internos de funciones de la biblioteca estándar de C
    perlguts         Funciones internas para crear extensiones
    perlcall         Convenciones de llamada desde C
    perlmroapi       Interfaz de complementos: resolución de métodos
    perlreapi        Interfaz de complementos: expresiones regulares
    perlreguts       Componentes del motor de expresiones regulares

    perlapi          Lista de API
    perlintern       Funciones internas de Perl
    perliol          API en C para implementar en Perl las capas de E/S
    perlapio         Interfaz de abstracción de E/S interna

    perlhack         Guía para hackers
    perlsource       Guía del árbol de código fuente
    perlinterp       Descripción del código fuente y el funcionamiento del intérprete
    perlhacktut      Tutorial de creación de un parche sencillo de código C
    perlhacktips     Consejos para modificar el código C del núcleo de Perl
    perlpolicy       Directivas de desarrollo de Perl
    perlgit          Uso de git con el repositorio de Perl

=head2 Varios

    perlbook         Información de libros sobre Perl
    perlcommunity    Información sobre la comunidad Perl

    perldoc          Consulta de la documentación de Perl en formato Pod

    perlhist         Registros históricos de Perl
    perldelta        Cambios con respecto a la versión anterior
    perl5161delta    Cambios en la versión 5.16.1
    perl5160delta    Cambios en la versión 5.16.0
    perl5160delta    Cambios en la versión 5.16.0
    perl5143delta    Cambios en la versión 5.14.3
    perl5142delta    Cambios en la versión 5.14.2
    perl5141delta    Cambios en la versión 5.14.1
    perl5140delta    Cambios en la versión 5.14.0
    perl5124delta    Cambios en la versión 5.12.4
    perl5123delta    Cambios en la versión 5.12.3
    perl5122delta    Cambios en la versión 5.12.2
    perl5121delta    Cambios en la versión 5.12.1
    perl5120delta    Cambios en la versión 5.12.0
    perl5101delta    Cambios en la versión 5.10.1
    perl5100delta    Cambios en la versión 5.10.0
    perl589delta     Cambios en la versión 5.8.9
    perl588delta     Cambios en la versión 5.8.8
    perl587delta     Cambios en la versión 5.8.7
    perl586delta     Cambios en la versión 5.8.6
    perl585delta     Cambios en la versión 5.8.5
    perl584delta     Cambios en la versión 5.8.4
    perl583delta     Cambios en la versión 5.8.3
    perl582delta     Cambios en la versión 5.8.2
    perl581delta     Cambios en la versión 5.8.1
    perl58delta      Cambios en la versión 5.8.0
    perl561delta     Cambios en la versión 5.6.1
    perl56delta      Cambios en la versión 5.6
    perl5005delta    Cambios en la versión 5.005
    perl5004delta    Cambios en la versión 5.004

    perlexperiment   Lista de funcionalidades experimentales de Perl

    perlartistic     Licencia Artistic de Perl
    perlgpl          Licencia GNU General Public License

=head2 Idiomas específicos

=for buildtoc flag +r

    perlcn           Perl para chino simplificado (en EUC-CN)
    perljp           Perl para japonés (en EUC-JP)
    perlko           Perl para coreano (en EUC-KR)
    perltw           Perl para chino tradicional (en Big5)

=head2 Información específica de plataformas

    perlaix          Notas para AIX
    perlamiga        Notas para AmigaOS
    perlbeos         Notas para BeOS
    perlbs2000       Notas para POSIX-BC BS2000
    perlce           Notas para WinCE
    perlcygwin       Notas para Cygwin
    perldgux         Notas para DG/UX
    perldos          Notas para DOS
    perlepoc         Notas para EPOC
    perlfreebsd      Notas para FreeBSD
    perlhaiku        Notas para Haiku
    perlhpux         Notas para HP-UX
    perlhurd         Notas para Hurd
    perlirix         Notas para Irix
    perllinux        Notas para Linux
    perlmacos        Notas para Mac OS (Classic)
    perlmacosx       Notas para Mac OS X
    perlmpeix        Notas para MPE/iX
    perlnetware      Notas para NetWare
    perlopenbsd      Notas para OpenBSD
    perlos2          Notas para OS/2
    perlos390        Notas para OS/390
    perlos400        Notas para OS/400
    perlplan9        Notas para Plan 9
    perlqnx          Notas para QNX
    perlriscos       Notas para RISC OS
    perlsolaris      Notas para Solaris
    perlsymbian      Notas para Symbian
    perltru64        Notas para Tru64
    perluts          Notas para UTS
    perlvmesa        Notas para VM/ESA
    perlvms          Notas para VMS
    perlvos          Notas para Stratus VOS
    perlwin32        Notas para Windows

=for buildtoc flag -r

=head2 Avisos sobre documentos eliminados

    perlboot		
    perlbot		
    perltodo
    perltooc		
    perltoot		

=for buildtoc __END__

En un sistema Unix, esta documentación estará también disponible, por lo
general, en forma de páginas de manual que se pueden consultar con el programa
F<man>.

Si sucede algo raro con el programa y no está seguro de dónde debe buscar
ayuda, pruebe primero el modificador B<-w>. Normalmente le indicará dónde
está el problema.

=head1 DESCRIPCIÓN

Oficialmente, Perl significa Practical Extraction and Report Language
(I<Lenguaje práctico para la extracción de datos y creación de informes>),
salvo cuando no se usa para eso.

Perl se creó como un lenguaje optimizado para procesar archivos de texto, a
fin de extraer información y utilizarla para generar informes. Pronto se
convirtió en un lenguaje útil para muchas tareas de administración de
sistemas. Con los años, Perl se ha convertido en un lenguaje de programación
de propósito general. Se utiliza para todo tipo de desarrollos, desde
"programas de una línea" hasta aplicaciones a gran escala.

El lenguaje se diseñó para ser práctico (fácil de usar, eficaz, completo),
más que estético (reducido, elegante, minimalista).

Perl combina (en opinión del autor) algunas de las mejores características de
C, B<sed>, B<awk> y B<sh>, por lo que las personas familiarizadas con estos
lenguajes aprenderán Perl fácilmente (los historiadores de los lenguajes
también destacarán algunos vestigios de B<csh>, Pascal e incluso BASIC-PLUS).
La sintaxis de expresiones es muy parecida a la de C. A diferencia de la
mayoría de las utilidades Unix, Perl no limita de forma arbitraria el tamaño
de los datos; si el sistema dispone de memoria suficiente, puede "succionar" un
archivo completo como una sola cadena. La profundidad de recursión es
ilimitada. Y las tablas usadas por los hashes (a veces denominados "arrays
asociativos") se expanden cuando es necesario para que el rendimiento no se vea
afectado. Perl puede utilizar sofisticadas técnicas de detección de patrones
para analizar rápidamente grandes cantidades de datos. Aunque está optimizado
para el procesamiento de texto, también incluye muchas herramientas
magníficas para procesar datos binarios.

Pero esto no es todo.

En 1993 (véase L<perlhist>) se lanzó Perl 5, prácticamente una reescritura
completa del lenguaje, que proporciona las siguientes ventajas adicionales:

=over 4

=item *

modularidad y capacidad de reutilización gracias a numerosos módulos

Se describe en L<perlmod>, L<perlmodlib> y L<perlmodinstall>.

=item *

capacidad de integración y ampliación

Se describe en L<perlembed>, L<perlxstut>, L<perlxs>, L<perlxstypemap>,
L<perlcall>, L<perlguts> y L<xsubpp>.

=item *

permite al usuario crear sus propias "variables mágicas" (incluidas varias
implementaciones simultáneas de DBM)

Se describe en L<perltie> y L<AnyDBM_File>.

=item *

subrutinas que se pueden reemplazar, cargar automáticamente y prototipar

Se describe en L<perlsub>

=item *

estructuras de datos anidadas de profundidad arbitraria y funciones anónimas

Se describe en L<perlreftut>, L<perlref>, L<perldsc> y L<perllol>.

=item *

programación orientada a objetos

Se describe en L<perlobj> y L<perlootut>.

=item *

compatibilidad con procesos ligeros (hilos de ejecución)

Se describe en L<perlthrtut> y L<threads>.

=item *

compatibilidad con Unicode, internacionalización y localización

Se describe en L<perluniintro>, L<perllocale> y L<Locale::Maketext>.

=item *

ámbito léxico

Se describe en L<perlsub>

=item *

mejoras de las expresiones regulares

Se describe en L<perlre>, con ejemplos adicionales en L<perlop>.

=item *

depurador mejorado y entorno Perl interactivo, compatible con un editor
integrado

Se describe en L<perldebtut>, L<perldebug> y L<perldebguts>.

=item *

biblioteca compatible con POSIX 1003.1

Se describe en L<POSIX>.

=back

Entre otras...

=head1 DISPONIBILIDAD

Perl está disponible para la mayoría de los sistemas operativos (incluidas
prácticamente todas las plataformas Unix). Encontrará una lista en la
sección "Plataformas compatibles" de L<perlport>.

=head1 ENTORNO

Vea L<perlrun>.

=head1 AUTOR

Larry Wall <larry@wall.org>, con la ayuda de muchas personas.

Si considera que sus éxitos con Perl y sus testimonios pueden ayudar a otros
programadores que desean utilizar Perl en sus proyectos, o si simplemente
quiere expresar su gratitud a Larry y a los demás programadores de Perl,
escriba un mensaje a la dirección perl-thanks@perl.org .

=head1 ARCHIVOS

 "@INC"                     ubicación de bibliotecas de Perl

=head1 VEA TAMBIÉN

 http://www.perl.org/       página de inicio del lenguaje Perl
 http://www.perl.com/       artículos sobre Perl (O'Reilly)
 http://www.cpan.org/       I<Comprehensive Perl Archive Network>
 http://www.pm.org/         el sitio de Perl Mongers

=head1 DIAGNÓSTICO

El pragma C<use warnings> (y el modificador B<-w>) produce algunos
diagnósticos muy interesantes.

Encontrará en L<perldiag> las descripciones de todos los diagnósticos de
Perl. El pragma C<use diagnostics> convierte automáticamente las advertencias
y errores de Perl, normalmente escuetos, en estos mensajes más desarrollados.

Los errores de compilación le indicarán el número de línea del error,
además del siguiente símbolo o tipo de símbolo que iba a ser examinado. (En
un script pasado a Perl a través de modificadores B<-e>, cada B<-e> cuenta
como una línea).

Los scripts setuid tienen restricciones adicionales que pueden producir
mensajes de error como "Insecure dependency" (dependencia insegura). Vea
L<perlsec>.

No olvide que es muy importante utilizar el modificador B<-w>.

=head1 ERRORES

El uso del modificador B<-w> no es obligatorio.

Perl depende de las definiciones de hardware para diversas operaciones, como la
conversión de tipos, atof() o la salida de números de punto flotante con
sprintf().

Si stdio requiere ejecutar seek o eof entre lecturas y escrituras para una
secuencia determinada, Perl también lo requerirá (esto no se aplica a
sysread() ni a syswrite()).

Aunque ninguno de los tipos de datos predefinidos tiene un límite de tamaño
(aparte del tamaño de la memoria disponible), hay algunos límites
arbitrarios. Por ejemplo, un nombre de variable no puede tener más de 251
caracteres. Por otra parte, los números de línea especificados por los
diagnósticos se almacenan internamente como enteros cortos, por lo que están
limitados a un máximo de 65535 (cifras más altas quedarán afectadas por el
desbordamiento).

Puede enviar informes de error a través de la dirección perlbug@perl.org (no
olvide incluir toda la información de configuración emitida por el programa
myconfig en el árbol de código fuente de perl, o por C<perl -V>). Si ha
logrado compilar perl, puede utilizar el script L<perlbug> del subdirectorio
F<utils/> para enviar informes de error.

En realidad Perl significa I<Pathologically Eclectic Rubbish Lister>
(Presentador de basura patológicamente ecléctico), pero nadie debe enterarse
de esto :-).

=head1 NOTAS

El lema de Perl es "Se puede hacer de varias maneras". Dejamos como ejercicio
para el lector averiguar de cuántas maneras se puede hacer  :-).

Las tres virtudes principales de un buen programador son la pereza, la
impaciencia y la confianza en sí mismo. Consulte el "Libro del Camello" (en
concreto, camello arábigo, o dromedario) para averiguar por qué.


=head1 TRADUCTORES

=over

=item * Joaquín Ferrero (Tech Lead)

=item * Enrique Nell (Language Lead)

=back

