• Publicidad

Aprendiendo Perl, ayuda con un ejemplo

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Aprendiendo Perl, ayuda con un ejemplo

Notapor barbanegra_2005 » 2006-02-21 15:55 @705

Hola amigos, lo primero felicitarles por la página, me ha gustado ver que Perl está guerreando en el web y sobre todo por el buen diseño. Lo de guerreando lo digo por eso de que como el php actualmente es lo que se ve en la mayoría de las páginas programadas (o eso o ASP, es lo que yo veo principalmente, no se si estaré en lo cierto). Veréis, estoy empezando a aprender a programar (comencé un curso de VB y C, pero por motivos de trabajo lo tuve que dejar), y bueno de los lenguajes que he visto, todos muy útiles, el más divertido y "de andar por casa" es el Perl. Me compré dos libros de O'Reilly el "CGI Programming on the WWW" y el "Learning Programing on Win32", estoy mirando un poco de los dos (estoy por los primeros capítulos), y he llegado a un ejemplo del tema 2 del libro del cgi en el que no entiendo una parte, a ver si me pueden ayudar es la que esta delimitada por asteriscos:


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/local/bin/perl
$request_method = $ENV{'REQUEST_METHOD'};
if ($request_method eq "GET") {
          $form_info = $ENV{'QUERY_STRING'};
} else {
      $size_of_form_information = $ENV{'CONTENT_LENGTH'};
**********      read (STDIN, $form_info, $size_of_form_information);**********
}
($field_name, $command) = split (/=/, $form_info);
print "Content-type: text/plain", "\n\n";
if ($command eq "fortune") {
    print `/usr/local/bin/fortune`;
} elsif ($command eq "finger") {
    print `/usr/ucb/finger`;
} else {
    print `/usr/local/bin/date`;
 }
exit (0);
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


El resto del ejemplo lo entiendo, muchas gracias amigos por adelantado
barbanegra_2005
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2006-02-21 15:23 @683

Publicidad

Notapor monoswim » 2006-02-21 16:13 @717

la función read es muy util para leer los bufers de entrada y sirve para ir leyendo el bufer de a partes, por ejemplo, cuando subes una imagen, en vez de leer los 5'Kb vas leyendo de a Kb por Kb...

Espero que te sirva

Saludos
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Re: Aprendiendo Perl, ayuda con un ejemplo

Notapor explorer » 2006-02-21 16:25 @726

Resulta que si la petición no es del tipo GET, será POST, con lo que lo que nos manda el usuario viene por la entrada estándar de nuestro programa. Para saber cuánto, leemos a continuación el valor de la variable CONTENT_LENGTH, que nos lo devuelve en bytes.
Luego hacemos un read, leyendo desde la entrada estándar (STDIN), tantos bytes como nos han dicho ($size_of_form_information), y lo guardamos en la variable $form_info.
Última edición por explorer el 2007-01-18 17:47 @782, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor kidd » 2006-02-21 18:26 @810

Hola:

Podrías checar el siguiente tutorial:
http://perlenespanol.com/archives-tut/000032.html

Habla justamente acerca del tema.


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Ok, muchas gracias chicos =)

Notapor barbanegra_2005 » 2006-02-22 07:44 @364

Bien, lo entiendo mejor ahora.

read (STDIN, $form_info, $size_of_form_information);

Si el método es POST (depende del formulario, no del script segun el ejemplo del libro, por eso da los dos modelos pa que se pueda usar indistintamente un formulario con POST o GET), si el método es POST los datos del usuario los manda como un flujo a través del STDIN, es decir lo puedo traducir como

lee (DESDE_STDIN, $laprimeravariable("querystring" o los datos del formulario),$lasegundavariable(tamaño que sacamos en $ENV{'CONTENT_LENGTH'))

Lo que no comprendía era que pintaba el STDIN seguido de 2 variables, es esto verdad? Lee desde la fuente STDIN la variable y saca de esa variable el tamaño, es así por la construcción de la función READ según la documentación del perl

read FILEHANDLE,SCALAR,LENGTH

Gracias por la ayuda amigos, si me he equivocado corrijanme. Los tutoriales me los estoy mirando ahora mismo =), a ver que dicen.
barbanegra_2005
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2006-02-21 15:23 @683


Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados