Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Web » Aprendiendo Perl, ayuda con un ejemplo Responder al tema
Nuevo tema


Página 1 de 1  [ 5 mensajes ] 
 
Nota 2006-02-21 15:55 @705

Perlero Nuevo
Registrado: 2006-02-21 15:23 @683
Mensajes: 7
Aprendiendo Perl, ayuda con un ejemplo
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:


Syntax: [ Download ] [ Hide ]
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);


El resto del ejemplo lo entiendo, muchas gracias amigos por adelantado


Nota 2006-02-21 16:13 @717
Avatar de Usuario
Vive para Perl en Español
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires
Mensajes: 455
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


Nota 2006-02-21 16:25 @726
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10216
Re: Aprendiendo Perl, ayuda con un ejemplo
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

Nota 2006-02-21 18:26 @810
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Hola:

Podrías checar el siguiente tutorial:
http://perlenespanol.baboonsoftware.com ... 00032.html

Habla justamente acerca del tema.


SALUDOS

_________________
Uriel Lizama Perl programmer fundador de Perl en Español


Nota 2006-02-22 07:44 @364

Perlero Nuevo
Registrado: 2006-02-21 15:23 @683
Mensajes: 7
Ok, muchas gracias chicos =)
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.


Responder al tema  [ 5 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO