The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

perlfaq1 - Preguntas generales sobre Perl

VERSIÓN

versión 5.021010

DESCRIPCIÓN

En esta sección de las preguntas más frecuentes se proporcionan respuestas a preguntas muy generales sobre Perl.

¿Qué es Perl?

Perl es un lenguaje de programación de alto nivel con una herencia ecléctica, creado por Larry Wall con la ayuda de miles de programadores.

Las características de manipulación de texto, archivos y procesos que ofrece Perl lo convierten en un lenguaje especialmente adecuado para tareas que requieren crear rápidamente prototipos, utilidades del sistema, herramientas de software, tareas de administración de sistemas, acceso a bases de datos, programación gráfica, conexión a redes y programación web.

Perl desciende del extendido lenguaje de programación C y, en menor medida, de sed, awk, la shell de Unix, y de muchos otros lenguajes y herramientas.

Por estas cualidades es muy popular entre los desarrolladores de sitios web y los administradores de sistemas. Pero también lo usan matemáticos, expertos en ingeniería genética, periodistas, directivos, y otros profesionales de muchos campos.

¿Quién respalda a Perl? ¿Quién lo desarrolla? ¿Por qué es gratis?

La cultura de Internet existente antes de que "la red" se convirtiera en un fenómeno de masas, y las firmes convicciones de Larry Wall, el creador de Perl, dieron lugar a la política de distribución libre y abierta de Perl. El soporte de Perl lo ofrecen sus usuarios. Los componentes del núcleo, la biblioteca Perl estándar, los módulos opcionales y esta documentación han sido desarrollados por voluntarios.

El equipo de desarrollo principal (denominado Perl Porters) está integrado por un grupo de personas de gran altruismo, dedicadas a producir gratuitamente software de mejor calidad que el que se podría obtener pagando. Si desea curiosear los desarrollos que se están realizando, puede consultar el archivo de mensajes de la lista de correo o leer las preguntas más frecuentes. También puede suscribirse a la lista de correo enviando una solicitud de suscripción a perl5-porters-subscribe@perl.org (solo tiene que enviar un mensaje vacío sin asunto).

Aunque el proyecto GNU incluye Perl en sus distribuciones, no existe "GNU Perl". La Free Software Foundation no tiene nada que ver con el desarrollo y el mantenimiento de Perl. Los términos de la licencia de Perl también son más flexibles en general que los de las licencias de software GNU.

Si lo desea, puede obtener soporte comercial para Perl, pero a la mayoría de los usuarios les bastará con el soporte informal. Vea la respuesta a la pregunta "¿Dónde puedo adquirir una versión comercial de Perl?" para obtener más información.

¿Qué versión de Perl debo utilizar?

(contribución de brian d foy)

Esto suele ser una cuestión de opinión y gusto, y no hay una respuesta definitiva para todos. En general, conviene usar la versión estable actual o la versión estable inmediatamente anterior. En la actualidad, éstas son perl5.22.x y perl5.20.x respectivamente.

Si desea usar otras versiones, para decidir cuál es la que más le conviene debe tener en cuenta varias cosas, como las siguientes:

  • Si todo funciona bien, la situación puede cambiar al actualizar perl (como mínimo pueden surgir nuevas advertencias).

  • Las versiones más recientes de perl incorporan más correcciones de errores.

  • La comunidad Perl tiende a ofrecer soporte para las versiones más recientes, por lo que le costará menos encontrar ayuda para estas versiones.

  • En las versiones anteriores a perl5.004 había problemas de seguridad graves con desbordamiento del búfer y, en algunos casos, notificaciones del CERT (por ejemplo, http://www.cert.org/advisories/CA-1997-17.html).

  • Las versiones más recientes suelen estar menos implementadas y probadas. Si no le gusta arriesgar, es posible que prefiera esperar unos meses para ver qué problemas detectan los usuarios.

  • Las versiones anteriores más recientes (en este caso, perl5.18.x) suelen mantenerse durante un tiempo, aunque en menor medida que las versiones actuales.

  • Actualmente nadie ofrece soporte para Perl 4 de forma activa. Hace diez años era un camello muerto (según este documento). Ahora, sus huesos pelados, rotos o erosionados, solo se asemejan vagamente a un esqueleto.

  • El equipo que trabaja en Rakudo, la implementación más avanzada actualmente de Perl 6, publicó en julio de 2010 una distribución de Perl 6 "útil y utilizable, para pioneros", denominada Rakudo Star. Encontrará más información en http://rakudo.org/.

  • Hay dos líneas de desarrollo de perl: una versión de mantenimiento y una versión experimental. Las versiones de mantenimiento son estables; en estas versiones se utiliza un número par como número de versión secundaria (p. ej., perl5.18.x, donde 18 es el número de versión secundaria). Las versiones experimentales pueden incluir características que no se incluyen en las versiones estables; en este caso el número de versión secundaria es un número impar (p. ej., perl5.19.x, donde 19 es la versión secundaria).

¿Qué son Perl 4, Perl 5 y Perl 6?

Se puede resumir de la siguiente manera: Perl 4 es el antecesor de Perl 5 y Perl 6. Perl 5 es el hermano mayor de Perl 6 y, aunque son lenguajes distintos, quien conozca uno de estos lenguajes observará muchas similitudes en el otro.

El número que va detrás de Perl (el 5 de Perl 5) es la versión principal del intérprete de Perl (es decir, perl), así como la versión del lenguaje. Cada versión principal incorpora diferencias importantes que no son compatibles con las versiones anteriores.

Actualmente, la versión principal de Perl es Perl 5, que se lanzó en 1994. Permite ejecutar scripts de la versión principal anterior, Perl 4 (lanzada en marzo de 1991), pero incluye diferencias importantes.

Perl 6 es una reinvención de Perl. Es un lenguaje del mismo linaje, pero incompatible. Estos dos lenguajes no son mutuamente excluyentes, sino que se complementan. Perl 6 no sustituye a Perl 5, y viceversa. Vea "¿Qué es Perl 6?" a continuación para obtener más información.

En perlhist encontrará el historial de revisiones de Perl.

¿Qué es Perl 6?

Perl 6 se describió originalmente como la reescritura de Perl 5 hecha por la comunidad. Su desarrollo comenzó en 2002; actualmente se sigue trabajando en su sintaxis y su diseño. A medida que el lenguaje evolucionaba, se empezó a ver con claridad que se trataba de un lenguaje independiente, incompatible con Perl 5 pero perteneciente a la misma familia de lenguajes.

En contra de la creencia popular, Perl 6 y Perl 5 coexisten pacíficamente. Perl 6 ha resultado ser una fuente de ideas fascinante para los usuarios de Perl 5 (el sistema de objetos Moose es un ejemplo bien conocido). Las comunidades se solapan, y este solapamiento fomenta la tradición de compartir y tomar prestado que ha sido clave para el éxito de Perl. Actualmente la implementación más avanzada de Perl 6 es Rakudo. Puede obtener más información en http://rakudo.org.

Si desea aprender más sobre Perl 6 o ayudarnos en nuestra cruzada por mejorar Perl, vea la página para programadores de Perl 6 en http://www.perl6.org/ e involúcrese en su desarrollo.

"Cuando hablamos de reinventar todo lo que sea necesario, no lo decimos en broma." --Larry Wall

¿Es Perl estable?

Las versiones de producción, que incorporan correcciones de errores y funcionalidad nueva, se someten a pruebas intensivas antes de su lanzamiento. Desde el lanzamiento de la versión 5.000, hemos lanzado una versión de producción al año (en promedio).

Ocasionalmente, el equipo de desarrollo de Perl realiza cambios en los componentes internos del lenguaje, pero siempre se hace lo posible por mantener la compatibilidad con las versiones anteriores.

¿Con qué frecuencia se lanzan nuevas versiones de Perl?

Recientemente se acordó el plan de lanzar una versión nueva de Perl cada mes de abril, aproximadamente, pero dando prioridad a la calidad de la distribución, por lo que la fecha de lanzamiento es flexible; no se fija una fecha estricta. En http://www.cpan.org/src/README.html se pueden ver las fechas de lanzamiento históricas.

Los números de versión secundaria pares (5.18, 5.20, 5.22) indican versiones de producción, mientras que los números de versión secundaria impares (5.19, 5.21, 5.23) indican versiones de desarrollo. Es probable que nunca tenga que instalar una versión de desarrollo de Perl, a menos que desee probar una funcionalidad experimental.

El equipo de desarrollo de Perl se llama Perl 5 Porters, y su organización se describe en http://perldoc.perl.org/perlpolicy.html. Sus normas de organización se resumen en una: Larry siempre tiene la razón, incluso cuando no la tenga.

¿Es difícil aprender a programar en Perl?

No. Es fácil adquirir los conocimientos básicos; y también lo es seguir aprendiendo. Perl se parece a la mayoría de los lenguajes de programación con los que es probable que tenga experiencia, por lo que si ya ha escrito programas en C, scripts en awk o de shell, o incluso un programa en BASIC, no le costará adaptarse.

La mayoría de las tareas solo requieren conocer un pequeño subconjunto del lenguaje Perl. Uno de los lemas que guían el desarrollo de Perl es "se puede hacer de varias maneras", que es la traducción de "there's more than one way to do it" (o TMTOWTDI, que en inglés se pronuncia como "tim toady"). Así, la curva de aprendizaje de Perl tiene una pendiente suave (es fácil de aprender) y larga (si desea seguir profundizando, puede aprender a hacer muchas cosas).

Por último, como Perl es frecuentemente un lenguaje interpretado (aunque no siempre y, desde luego, no por definición), puede escribir sus programas y probarlos sin un paso de compilación intermedio, lo que le permite experimentar y probar/depurar de manera rápida y sencilla. Esta facilidad para realizar experimentos también allana la curva de aprendizaje.

Si tiene experiencia en el uso de Unix, cualquier tipo de experiencia en programación, conocimientos de expresiones regulares y la capacidad de leer y entender el código de otros programadores, le costará menos aprender Perl. Cuando se enfrente a un problema, es probable que pueda obtener un ejemplo que funciona (generalmente gratis) de alguien que lo haya hecho ya. Y no olvidemos los módulos Perl. Se describen en la parte 3 de este conjunto de documentos sobre preguntas más frecuentes. CPAN se describe en la parte 2.

¿Cómo es Perl en comparación con otros lenguajes como Java, Python, REXX, Scheme o Tcl?

Perl se puede usar para solucionar prácticamente cualquier problema de programación, incluso los que requieren integrar código C especializado para aumentar la velocidad de ejecución. Como toda herramienta, se puede usar bien o mal. Perl tiene muchos puntos fuertes y algunos puntos débiles. Los aspectos en los que es bueno o malo suelen ser una opción personal.

Al elegir un lenguaje también debe tener en cuenta los recursos, la cultura de ejecución de pruebas (testing) y la comunidad del lenguaje.

Para realizar comparaciones con otro lenguaje específico, lo mejor suele ser crear un proyecto pequeño en ambos lenguajes y analizar los resultados. Asegúrese de usar todos los recursos disponibles para cada lenguaje; no olvide que un lenguaje es mucho más que la sintaxis.

¿Puedo hacer [tarea] en Perl?

Por su flexibilidad y capacidad de ampliación, Perl se puede usar prácticamente para cualquier tarea, desde el procesamiento de archivos en una línea hasta el desarrollo de sistemas grandes y complejos.

Para muchas personas, Perl es un buen sustituto de los scripts de shell. Para otros, es un cómodo sustituto de alto nivel para realizar la mayor parte de los programas que desarrollarían en lenguajes de bajo nivel como C o C++. En última instancia, el usuario (y posiblemente sus jefes) deberán decidir para qué tareas pueden usar Perl, y para cuáles no.

Si tiene una biblioteca que proporciona una API, puede hacer que cualquier componente de la misma esté disponible como cualquier otra función o variable de Perl mediante una extensión programada en C o C++, y vinculada dinámicamente al intérprete perl principal. También puede optar por trabajar en sentido contrario: desarrollar el programa principal en C o C++, y después vincular código Perl sobre la marcha para crear una aplicación eficaz. Vea perlembed.

Sin embargo, siempre habrá lenguajes reducidos de propósito específico orientados a un dominio de un problema concreto, más cómodos para afrontar determinados tipos de problemas. Perl trata de cubrir todas las necesidades, en lugar de limitarse a fines específicos. Algunos ejemplos de lenguajes especializados son prolog y matlab.

¿Cuándo no debo elegir Perl?

Una buena razón es tener una aplicación escrita en otro lenguaje que funciona bien y está bien programada, o disponer de un lenguaje para aplicaciones diseñado específicamente para una tarea determinada (como prolog o make).

Si necesita acelerar una parte específica de una aplicación Perl (algo que normalmente no necesitará) es posible que desee usar código C, pero podrá acceder a dicho código desde el código Perl mediante perlxs.

¿Cuál es la diferencia entre "perl" y "Perl"?

"Perl" es el nombre del lenguaje. Solo se escribe la "P" inicial en mayúsculas. El nombre del intérprete (el programa que ejecuta el script Perl) es "perl" (se escribe con "p" minúscula).

Puede elegir seguir esta convención o no, pero no debe escribir "PERL", ya que perl no es un acrónimo.

¿Qué es un JAPH?

(contribución de brian d foy)

JAPH significa "Just another Perl hacker". A finales de los ochenta, Randal Schwartz empezó a utilizar esta firma en mensajes de correo electrónico y usenet. Previamente había utilizado esta frase con muchos sujetos distintos ("Just another x hacker,"), así que para distinguir su JAPH decidió empezar a escribir la firma como un programa Perl:

    print "Just another Perl hacker,";

Otras personas adoptaron esta tendencia y empezaron a escribir programas astutos o enrevesados para producir el mismo resultado, y se descontroló el asunto, lo que proporcionó grandes momentos de diversión a sus creadores y lectores.

En CPAN encontrará varios programas JAPH, en http://www.cpan.org/misc/japh.

¿Cómo puedo animar a otros programadores a probar Perl?

(contribución de brian d foy)

Hágales ver que es por su propio interés. Si nunca han utilizado Perl y se sienten inseguros, busque alguna tarea en la que Perl les pueda ayudar. Esta ayuda puede implicar un ahorro (de tiempo, dinero o dolores de cabeza) o una aportación (en forma de flexibilidad, eficacia o facilidad para realizar pruebas).

En general, las ventajas que ofrece un lenguaje están muy relacionadas con la destreza de los usuarios del lenguaje. Si con Perl usted y su equipo pueden desarrollar de manera más rápida y mejor, su productividad aumentará. Recuerde que las personas suelen ser más receptivas cuando algo les proporciona un beneficio. Si le oponen resistencia, averigüe qué necesitan y hágales ver en qué medida Perl podría cubrir sus necesidades.

No tiene que preocuparse de buscar o pagar por usar Perl; está disponible gratuitamente y varios sistemas operativos populares lo incluyen. La comunidad ofrece soporte en foros como Perlmonks ( http://www.perlmonks.com ) y las distintas listas de correo de Perl ( http://lists.perl.org ). Generalmente, siempre que plantee algún problema recibirá rápidamente ayuda para solucionarlo.

Por último, tenga en cuenta que Perl puede no ser la herramienta adecuada para algunas tareas. Si sus afirmaciones son razonables y están basadas en la realidad, sus esfuerzos de evangelización tendrán más éxito. En cambio, si defiende sus ideas de manera dogmática, hará que las personas desconfíen de su mensaje. Sea honesto y admita posibles desventajas de elegir Perl. Al fin y al cabo, toda elección conlleva ventajas y desventajas.

Es posible que estos vínculos le resulten de utilidad:

AUTOR Y COPYRIGHT

Copyright (c) 1997-2010 Tom Christiansen, Nathan Torkington y otros autores indicados. Todos los derechos reservados.

Esta documentación es libre; puede redistribuirla o modificarla en los mismos términos que Perl.

Independientemente de su distribución, todos los ejemplos de código incluidos son de dominio público. Le permitimos y animamos a utilizar este código y los derivados que surjan en sus propios programas, ya sea con fines de diversión o beneficio. Le agradeceremos que incluya en su código una mención a estos documentos de preguntas más frecuentes, pero no le exigimos que lo haga.

TRADUCTORES

  • Joaquín Ferrero (Tech Lead)

  • Enrique Nell (Language Lead)