Академический Документы
Профессиональный Документы
Культура Документы
Para trabajar con Perl se requieren dos requerimientos bsicos y fciles de conseguir:
Un editor de texto para poder escribir los programas Perl.
El intrprete de Perl, que ejecute los programas realizados con Perl.
Es una combinacin de las caractersticas de los lenguajes ms usados por los
programadores de sistemas, como son los shell del sistema operativo UNIX, los utilidad
(que incluye un lenguaje interpretado propio) awk para formateo y tratamiento de texto e
incluso caractersticas de Pascal, aunque su potencia se basa en la similitud con las mejores
caractersticas del lenguaje estructurado C. Es por esto que el lenguaje Perl se percibe
habitualmente como un lenguaje intermedio entre los Shell scripts y la programacin en C.
Esto debido a que los programas en Perl son una sucesin de instrucciones y son similares a
los shell scripts porque no existe un procedimiento principal como la subrutina main en C.
Sin embargo, se parece al lenguaje C en su sintaxis y en el nmero importante de funciones
que permiten la manipulacin de cadenas de caracteres y archivos. Por todo esto, Perl es un
lenguaje muy utilizado en los dos campos siguientes:
1. La administracin de sistemas operativos, debido a que, por sus caractersticas Perl es
muy potente en la creacin de pequeos programas que pueden ser usados como filtros para
obtener informacin de ficheros, realizar bsquedas, entre otras cosas. Adems, aunque
Perl naci en un entorno Unix, hay versiones para casi todas las plataformas existentes.
2. La creacin de formularios en la Web. Se ha usado desde los primeros das del Web para
escribir scripts CGI (Common Gateway Interface), los cuales realizan el intercambio de
informacin entre aplicaciones externas y servicios de informacin, es decir, se encargan de
tratar y hacer llegar la informacin que el cliente WWW manda al servidor a travs de un
formulario. Es una de las "tres Ps (Perl, Python y PHP), que son los lenguajes ms
populares para la creacin de aplicaciones Web, y es un componente integral de la popular
solucin LAMP (Linux Apache MySQL Perl) para el desarrollo Web. Grandes proyectos
escritos en Perl son Slash, IMDb y UseModWiki, un motor de Wikipedia. En otras
palabras, muchos sitios Web con alto trfico de usuarios.
Actualmente existen dos versiones altamente populares de Perl, la 4.3 y la 5.0, habiendo
diferencias importantes entre una versin y otra, esto debido a que no son totalmente
compatibles. La versin 5 de Perles una reescritura en donde se aadieron caractersticas
para soportar estructuras de datos complejas, y un modelo de programacin orientado a
objetos. stos incluyen referencias, paquetes y una ejecucin de mtodos basada en clases y
la introduccin de variables de mbito lxico, que hizo ms fcil escribir
cdigo robusto.
Esto rompe en gran medida con la filosofa tradicional de Perl de una programacin ms
parecida a los Shells de Unix que al modular lenguaje C, de modo que las libreras, por
ejemplo para creacin de CGIs, no funcionan de un mtodo a otro.
Adems, el lenguaje Perl no es precompilado, pero an as es ms rpido que la mayora de
lenguajes interpretados. Esto se debe a que los programas en Perl son analizados,
interpretados y compilados por el interprete perl antes de su ejecucin.
Esto quiere decir que no hace falta un fichero binario para poder ejecutar las instrucciones
que hemos codificado usando este lenguaje, es decir, es interpretado, aunque el intrprete
de Perl "compila" los programas antes de ejecutarlos . Por esta razn es que se dice que es
un lenguaje pseudo compilado, o sea, una fusin entre compiladores e intrpretes.
Es importante en este punto la descripcin de lo que es un intrprete y cual es su diferencia
con un compilador, as como sus ventajas y desventajas, ya que los lenguajes
interpretativos se estn convirtiendo en una tendencia con mucha fuerza en la actualidad.
CARACTERISTICAS
La estructura completa de Perl deriva ampliamente del lenguaje C. Perl es un
lenguaje imperativo, con variables, expresiones, asignaciones, bloques de cdigo
delimitados por llaves, estructuras de control y subrutinas.
Perl tambin toma caractersticas de la programacin shell. Todas las variables son
marcadas con un signo precedente (sigil). Los sigil identifican inequvocamente los
nombres de las variables, permitiendo a Perl tener una rica sintaxis. Notablemente, los sigil
permiten interpolar variables directamente dentro de las cadenas de caracteres (strings).
Como en los shell, Perl tiene muchas funciones integradas para tareas comunes y para
acceder a los recursos del sistema.
Perl toma las listas del Lisp, hash (memoria asociativa) del AWK y expresiones regulares
del sed. Todo esto simplifica y facilita todas las formas del anlisis sintctico, manejo de
texto y tareas de gestin de datos.
Existen varias caractersticas acerca de Perl que son importantes de rescatar, las cuales se
mencionan a
continuacin:
1. Es fcil de usar, aunque es difcil de aprender. Cuando se ha programado en Perl por
varias horas,
Perl se va a ir haciendo cada vez ms fcil de implementar. Este lenguaje se desarroll
pensando
en que el lenguaje fuera prctico (fcil de usar, eficiente, y completo) en lugar de pequeo,
elegante y mnimo, adems de que esta enfocado hacia un desarrollador que posee cierta
cantidad
de conocimientos sobre el lenguaje y no as hacia un estudiante que esta aprendiendo.
2. Existen muy pocas cosas que no se pueden hacer con este lenguaje, por lo que se le
puede
considerar como un lenguaje que no tiene fronteras. Con Perl se puede programar cualquier
necesidad que se tenga, ya que existen libreras y mdulos para casi cualquier cosa que se
requiera, pero hay aplicaciones que requieren mucha rapidez en las cuales es mejor utilizar
otros
lenguajes que no sean interpretados.
3. Es rpido de crear, ya que no posee funciones que, aunque sean bastante interesantes,
hagan
disminuir la velocidad de desarrollo de una aplicacin del lenguaje.
4. El lenguaje es feo, siendo esta una de las principales razones para su difcil aprendizaje,
aunque
esto se compensa con el poder de alcance del lenguaje. Es por esto que Larry Wall escogi
el
camello como el logotipo del lenguaje, ya que aunque es feo, siempre trabaja fuerte an en
condiciones complicadas.
5. Se puede utilizar en varios entornos, como puede ser Windows 95, OS/2, Linux, entre
muchos
otros, sin realizar cambios de cdigo, siendo nicamente necesario la introduccin del
interprete
Perl correspondiente a cada sistema operativo .
6. Tiene caractersticas que soportan una variedad de paradigmas de programacin, como la
estructural, funcional y la orientada a objetos. Al mismo tiempo, Perl no obliga a seguir
ningn
paradigma en particular, ni obliga al programador a elegir alguna de ellas. No obstante, esta
caracterstica es solo accesible en la versin 5.0.
7. Tiene incorporado un poderoso sistema de procesamiento de texto y una enorme
coleccin de
mdulos disponibles.
8. Ofrece una ayuda en lnea desde la consola de comandos. Por ejemplo, para obtener
ayuda sobre la
Perl tiene muchas caractersticas que facilitan la tarea del programador a costa de unos
requerimientos de CPU y memoria mayores. stas incluyen gestin de memoria
automtica; tipo de dato dinmico; strings, listas y hashes; expresiones regulares;
introspeccin y una funcin eval().
Larry Wall fue adiestrado como lingista y el diseo de Perl ha sido muy aleccionado con
principios lingsticos. Ejemplos incluyen la Codificacin Huffman (las construcciones
ms comunes deben ser las ms cortas), buena distribucin (la informacin importante debe
ir primero) y una larga coleccin de primitivas del lenguaje. Perl favorece las
construcciones del lenguaje, tan naturales, como para los humanos son la lectura y la
escritura, incluso si eso hace ms complicado al intrprete Perl.
La sintaxis de Perl refleja la idea de que "cosas que son diferentes deben parecer
diferentes". Por ejemplo, escalares, arrays y hashes tienen diferente sigil. ndices de array y
claves hash usan diferentes clases de parntesis. Strings y expresiones regulares tienen
diferentes delimitadores estndar. Esta aproximacin puede contrastarse con lenguajes
como Lisp, donde la misma construccin S-expresin y sintaxis bsica se usa para muchos
y variados propsitos.
Perl tiene caractersticas que soportan una variedad de paradigmas de programacin, como
la imperativa, funcional y la orientada a objetos. Al mismo tiempo, Perl no obliga a seguir
ningn paradigma en particular, ni obliga al programador a elegir alguna de ellas.
Hay un amplio sentido de lo prctico, tanto en el lenguaje Perl como en la comunidad y la
cultura que lo rodean. El prefacio de Programming Perl comienza con, "Perl es un lenguaje
para tener tu trabajo terminado". Una consecuencia de esto es que Perl no es un lenguaje
ordenado. Incluye caractersticas si la gente las usa, tolera excepciones a las reglas y
emplea la heurstica para resolver ambigedades sintcticas. Debido a la naturaleza
indulgente del compilador, a veces los errores pueden ser difciles de encontrar. Hablando
del variado comportamiento de las funciones internas en los contextos de lista y escalar, la
pgina de manual de perlfunc(1) dice "En general, hacen lo que tu quieras, siempre que
quieras la coherencia."
Perl tiene varios lemas que transmiten aspectos de su diseo y uso. Uno es There's more
than one way to do it (Hay ms de una forma de hacerlo) (TMTOWTDI, usualmente
pronunciado 'Tim Toady'). Otros son "Perl: la motosierra del ejrcito Suizo de los lenguajes
de programacin" y "Lmites imprecisos". Una meta prefijada de Perl es hacer las cosas
fciles de forma fcil y las tareas difciles, posibles. A Perl tambin se le ha llamado "El
esparadrapo de Internet".
TIPOS DE DATOS
Un aspecto importante de este lenguaje es que, por defecto, no es necesario declarar
las variables
previamente a su uso. Las variables se pueden empezar a usar directamente en las
expresiones, lo cual
ofrece mucha flexibilidad al momento de estar desarrollando el cdigo.
Existen tres tipos bsicos de variables, los cuales se citan a continuacin.
$n = 42;
$nombre = "juan";
$color = 'rojo';
Perl convertir los strings en nmeros y viceversa dependiendo del contexto en que sean
usados. En el siguiente ejemplo los strings $n y $m son tratados como nmeros cuando son
argumentos del operador suma. Este cdigo imprime el nmero '5', desechando cualquier
informacin no numrica de la operacin y dejando los valores de las variables intactos. (El
operador de concatenacin no es +, sino ..)
$n = "3 manzanas";
$m = "2 naranjas";
print $n + $m;
Perl tambin tiene un contexto booleano que utiliza en la evaluacin de declaraciones
condicionales. Los siguientes valores en Perl evalan todos como falso:
$falso = 0; # el nmero cero
$falso = 0.0; # el nmero cero como flotante
$falso = '0'; # el string cero
$falso = ""; # el string vaco
$falso = undef; # el valor devuelto por undef
Todos los dems valores se evalan a verdadero. Esto incluye el curioso string autodescriptivo "0 pero verdadero", que de hecho es 0 como nmero, pero verdadero como
booleano. (Cualquier string no numrico tambin tendr esta propiedad, pero este string en
particular es ignorado por Perl en contextos numricos). Las expresiones booleanas
evaluadas tambin devuelven valores escalares. Aunque la documentacin no indica qu
valor particular se devuelve como verdadero o falso (y por lo tanto no fiable), muchos
operadores booleanos devuelven 1 por verdadero y el string vaco para falso (que evala a
cero en contexto numrico). La funcin defined() le dice si la variable tiene algn valor. En
el ejemplo anterior defined($falso) ser verdadero con cada uno de los valores anteriores,
excepto undef. Si, especficamente, quiere asegurarse de tener un resultado 1/0 (como en
C), necesita realizar el clculo siguiente:
my $resultado_real = $resultado_booleano ? 1 : 0;
Una lista se define listando sus elementos, separados por comas y rodeados por parntesis
donde as sea requerido por la precedencia de los operadores.
@puntuaciones = (32, 45, 16, 5);
Un hash puede ser inicializado desde una lista de pares clave/valor.
%favorito = (
joe => 'rojo',
estn definidas como una numerosa coleccin de macros, typedef y funciones; esto
constituye la API C de Perl. La API Perl puede ser desconcertante para el no iniciado, pero
sus puntos de entrada siguen un esquema de nombres coherente, que ayuda a los que
quieran utilizarla.
La ejecucin de un programa Perl se puede dividir, generosamente, en dos fases: tiempo de
compilacin y tiempo de ejecucin.[5] En tiempo de compilacin el intrprete parsea el
texto del programa en un rbol sintctico. En tiempo de ejecucin, ejecuta el programa
siguiendo el rbol. El texto es parseado slo una vez y el rbol sintctico es optimizado
antes de ser ejecutado, para que la fase de ejecucin sea relativamente eficiente. Las
optimizaciones del rbol sintctico en tiempo de compilacin incluyen simplificacin de
expresiones constantes, propagacin del contexto y optimizacin en trozos sueltos de
cdigo. Sin embargo, las fases de compilacin y ejecucin pueden anidarse: un bloque
BEGIN se ejecuta en tiempo de compilacin, mientras que una funcin eval inicia una
compilacin durante una ejecucin. Ambas operaciones estn implcitas en otras -de forma
notable, la clusula use que carga bibliotecas, conocidas en Perl como mdulos, implica un
bloque BEGIN.
Perl es un lenguaje dinmico y tiene una gramtica sensible al contexto que puede quedar
afectada por el cdigo ejecutado durante una fase de ejecucin intermedia (Ver
ejemplos.[6] ). Por eso Perl no puede ser parseado mediante una aplicacin directa de
analizadores lxicos/parseador Lex/Yacc. En cambio, el intrprete implementa su propio
analizador lxico, que coordinado con un parseador modificado GNU bison resuelve las
ambigedades del lenguaje. Se ha dicho que "slo perl puede parsear Perl", queriendo decir
que slo el intrprete Perl (perl) puede parsear el lenguaje Perl (Perl). La razn de esto se
atestigua por las persistentes imperfecciones de otros programas que emprenden la tarea de
parsear Perl, como los analizadores de cdigo y los auto-indentadores, que tienen que
vrselas no slo con las muchas formas de expresar inequvocamente construcciones
sintcticas, sino tambin con el hecho de que tambin Perl no puede, en general, ser
parseado sin antes ser ejecutado.
El mantenimiento del intrprete Perl, a lo largo de los aos, se ha vuelto cada vez ms
difcil. El ncleo ha estado en continuo desarrollo desde 1994. El cdigo ha sido
optimizado en rendimiento a expensas de la simplicidad, claridad y unas interfaces internas
ms fuertes. Nuevas caractersticas han sido aadidas, manteniendo todava, compatibilidad
virtualmente completa hacia atrs con las primeras versiones. El tamao y la complejidad
del intrprete son una barrera para los desarrolladores que desean trabajar en l.
Perl es distribuido con unos 120.000 test funcionales. stos se ejecutan como parte del
proceso normal de construccin y comprueban extensamente al intrprete y a sus mdulos
principales. Los desarrolladores Perl confan en los test funcionales para asegurarse que los
cambios en el intrprete no introducen errores; recprocamente, los usuarios Perl que vean
al intrprete pasar los test funcionales en su sistema pueden tener un alto grado de
confianza de que est funcionando adecuadamente.
No hay una especificacin o estndar escrito para el lenguaje Perl y no hay planes de crear
uno para la versin actual de Perl. Siempre ha existido slo una implementacin del
intrprete. Este intrprete, junto con los test funcionales, forman la especificacin de facto
del lenguaje.