Índice :
- #Índice_:
- #¿Qué_hace_PERL:_
- #Obtener_PERL:
- #Ejecutar_PERL:
- #Ejemplos:
- #Bibliografía_:_
- #Vínculos_:_
- #¡Ayúdame
- #Agradecimientos
¿Qué hace PERL?:
Hasta dónde sé es un
lenguaje de programación multiuso, yo aquí lo utilizo exclusivamente
para la creación de scripts, pero su potencia va mucho más
allá (de la mano de su complejidad).
Bueno, pues mi interés por él
deriva de la posibilidad de crear o editar ../archivos en el servidor donde
esté instalado.
Por ejemplo, lo que con scripst en
Java solo sé trabajar con cookies almacenadas en el PC del visitante
de mi página y por tanto, susceptibles a ser eliminados por el propio
usuario: Con Perl veo como se puede mantener almacenado en el servidor.
Los ejemplos que figuran en esta página
dan una idea de cómo hacerlo, y además son 100% operativos.
Posibilidades prácticas :
- Mantener el tu sitio web una base de datos de los visitantes de tus
páginas, sus gustos (obtenidos vía formulario), etc.
- Mostrar dicha información como documento HTML si se desea.
- Crear páginas dinámicas, que se vayan haciéndose
a sí mismas con las entradas de los usuarios que la visiten.
- ... el límite como siempre es tu imaginación.
Obtener PERL:
El que tengo en entorno Microsoft Windows, lo obtuve
en www.ActiveState.com/ActivePerl
.
El que tengo en Linux, es el que venía en el
paquete de mi distribución SuSE 7.1 Professional
(que me regalaron). :)
Ejecutar PERL:
Bueno, este ha sido mi mayor problema.
Si simplemente quieres
programar en Windows, a nivel local, ejecutándolo
desde la línea de comandos va de cine.
Sin embargo yo quería
hacer correr los programas vía navegador
(ver bibliografía
). Por lo menos yo no conseguí que mi Windows
Explorer le diese soporte a un intérprete de PERL.
Entonces, para poder jugar,
tuve que darme de alta en un servidor con PERL ( www.tripod.com ), descargar
allí páginas y códigos y probarlos conectado.
Es un método incómodo
que me hizo abandonarlo, hasta que he tenido tiempo
de investigar un poquito ;)
Que sepas que lo he resuelto;
la clave : Linux y el servidor Apache. Ya puedo hacerlo
todo en mi ordenador, sin conexión, probarlo y descargarlo
cuando me apetezca.
Si estás interesado/a,
te ayudo.
Ejemplos:
-
prueba.cgi : Si al ejecutarlo
te aparece la fecha, es que tu servidor soporta PERL. Así
será más fácil. ;)
- readarticle.cgi
: Lee un fichero de texto situado en el servidor
y muestra en la página del navegador.
- ent_var.cgi
: Muestra variables de entorno, esto es, informaciones
que le pasa nuestro navegador al servidor web. Es una
pirateada (no, hombre, no, que es código libre) de un ejercicio
del libro Guía
Esencial PERL5.
- registro.cgi
: Lee los datos de un formulario y los
mete en un archivo en formato html. Luego te muestra
un listado de vínculos a los ficheros creados. También
es un ejercicio del libro
Guía Esencial PERL5. Lo he limitado a 5 ficheros para no saturarme
(ufff!). No sé aún
como borrarlos (no sé que me pasa con ulink) así
que utilizo un directorio para "basura".
- clave.cgi : Acceso restringido
por clave. Lo que hace es dar acceso a un fichero o a otro en función
de quien sea el visitante de la página. Bueno, si te conozco,
prueba con tu nombre y apellido en minúsculas. Si no, con
Login = user Password = anonymous o con otro que te inventes que
no será aceptado y te llevará a la página por defecto
.Las fotos son todas de 2002 sacadas con mi cámara.
- nueva_cita.cgi : Tenemos
un archivo con una serie de citas que mostraré de forma
aleatoria cada vez que se abra la página principal.
Este CGI permite añadir nuevas citas, siempre y cuando el
usuario esté dado de alta para este servicio. Prueba con Login
= root Clave = toor
- HTLMdinamico.cgi
: Muestra una de las citas del archivo anterior de
forma aleatoria cada vez que se abre o relee esta página.
Lo hace en la celda situada debajo de esta descripción. Bueno, pues parece que al fin veo una limitación
al sitio tripod. En mi ordenador con servidor APACHE, el código
funciona (¡Diablos, que lo he hecho yo!) si doy al fichero HTML atributo
de ejecutable, pero tripod en cuanto recibe un archivo le quita este atributo
(incluso a los CGIs), y su servidor FTP no acepta el comando CHMOD.
He probado a dejar el HTML en el directorio de los CGIs, porque veo que
estos se ejecutan bien, pero .... Se me ocurren ideas un poco retorcidas
de solucionarlo, pero no me parecen "rentables". Si alguien sabe como
solucionar este problema o de otro sitio que soporte la llamada :
<!--#exec cgi="ruta del fichero/nombre
del fichero.cgi"-->
y me lo dice, le invito a una cerveza, café o similares
(no, no tiene porqué contener ningún tipo de droga).
- intermediario.cgi : Hace
cualquier cosa para la que esté programado y después
muestra la página que el usuario deseaba ver cuando hizo click
sobre este vínculo. ¿Utilidades?
- Anteponer un contador de accesos a cada página.
Por ejemplo, el acceso a kaos.html pasa por este filtro. Fíjate si
no en la dirección URL que aparece en tu navegador cuando accedes
a ella, ves ese final con ?kaos.
- Resolver de forma chapucera el problema anterior. La página que verás al hacer click sobre el
vínculo será esta misma mostrada por el CGI, que cuando encuentre
la cadena "PAGINA_FANTASMA" la sustituirá por el resultado
de HTMLdinamico CGI. ¿Una chapuza verdad?, pero funciona hasta que
me ayudes con una solución mejor ;).
- Como mediante la llamada por href, se permite la transferencia
de parámetros, personalizar la web destino, pasándole el
login del usuario actual.
- Etc, etc
- Problemas :
- Que si ejecuto este programa, no me funciona el programa anterior
:)
- Que TRIPOD no me deja manipular ficheros con el CGI si no
están en su mismo directorio. Por lo que tengo que pasar una copia
de IndicePERL.html para que funcione el ejemplo a /./. ¿Se puede evitar esto?
- intermediariogenerico.cgi
: El caso anterior es demasiado particular. En este tengo un CGI genérico,
que puede sustituir a las llamadas a los documentos HTML. Se le llama pasándole
el nombre sin extensión del archivo HTML en cuestión y a partir
de ahí hace lo siguiente :
- Abre para añadir o crea si no existiera, un fichero con
el nombre pasado como parámetro y la extensión "txt", incorporándole
una línea con la información del día en que se está
accediendo, navegador y su versión y dirección IP desde la
que se accede.
- Muestra el documento HTML, redireccionando correctamente bitmaps
y vínculos locales.
- Para ejecutar este script, basta con que vuelvas a la página
principal y entres en "kaos" (de recomendada lectura y que te invito a que
me ayudes a ampliar). Fíjate en la dirección URL que aparece
en tu navegador cuando accedes a ella, como observarás no aparece
una dirección de un documento html, si no .... /./intermediariogenerico.cgi?kaos
. O sea, que estás llamando a un CGI al que le pasas "kaos"
como argumento. Y a partir de ahí has generado una nueva línea
en el fichero ...././kaos.txt . Puedes abrirlo sin más
que poner esta dirección en tu navegador. Hacer un contador a partir
de ahí es inmediato (¡sí, piensa un poquito!). Aunque
lo ideal es que funcione <--!#exec cgi ....
- Futuro1 : Tiempo al tiempo.
Bibliografía :
- Guía Esencial
PERL5 :
- Editorial : Pretince
Hall
- Podéis comprarlo
o , como hice yo, pedírselo a una amiga :)
- Tenéis los
ejercicios del libro en www.phptr.com/essential
Vínculos :
- Si crees que te sirven de algo
los códigos de estas páginas, sólo tienes que pedírmelos,
te los mando por e-mail, porque no sé si te puedes descargar los
CGIs directamente visitando cada página. lmsaizarroba@yahoo.es
¡Ayúdame a saber!
- Como no me funciona
la sentencia en mi sitio TRIPOD <!--#exec cgi="ruta del fichero/nombre
del fichero.cgi"-->, ¿hay alguna otra alternativa?
. Lo que quiero es que se ejecute un cgi cada vez que la página
se abre o relee.
- Lo mismo para mi problema de que no puedo manipular (¡Ni
leer!) ficheros del directorio padre. En mi local Apache va de cine.
- Necesito saber si se puede acceder sin problemas a mi servidor.
Para ello sería necesario que mientras yo esté conectado
y sepa mi dirección IP, un alma caritativa entrase y me dijese si
funciona. No, no tengo dos líneas telefónicas ni sé
como hacerlo yo solito. A nivel local simplemente pongo la URL http://localhost/
, no sé si para verme desde el exterior sería algo similar
a http://número de IP local.
- Agradecería cualquier sugerencia comentario sobre la
página, eso sí, abtenerse amigos de la estética.
lmsaizarroba@yahoo.es
Agradecimientos
- A Eva por el "préstamo" de los libros de PERL y JAVASCRIPT.
No, los que compréis en las tiendas no serán los mismos,
estos están personalizados (comentados y corregidos).
- A Toni por la licencia de Linux.
- A mamá por el café. Lo siento, pero el té
como que no. A todo caso chimarrao.
- A Fredi por su "motivación inversa".
- A The Beautiful South , por Quench.
- A Linus Torvals como padre fundador y a todas las personas que
han ayudado y ayudan a mejorar y difundir Linux y sus aplicaciones GPL.
Gracias, gracias, gracias. ¡Ahí hay ilusión!
- A la gente que disponibiliza manuales y recursos gratuitos en
la red. No me digáis que mostrar lo que sabes no es una forma de altruísmo.
- A Jim Henson y todos los personajes de Barrio Sésamo.
En especial a Triqui, Coco y Gustavo, por que sus lecciones son la base
de toda posibilidad de conocimiento.
- A las vacaciones de Agosto de 2002, por permitirme jugar un poco
con esto (en lugar de invertir todo ese tiempo en esa perniciosa actividad
que es darle vueltas a la cabeza).