Foros del Web » Programación para mayores de 30 ;) » Programación General »

Faq de Perl y CGI

Estas en el tema de Faq de Perl y CGI en el foro de Programación General en Foros del Web. Tema: Bases de datos Pregunta: Como conectarme a la base de datos ? Respuesta: Lo podemos hacer usando el módulo DBI con lo cual al ...

  #31 (permalink)  
Antiguo 20/07/2004, 13:56
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Bases de datos
Pregunta: Como conectarme a la base de datos ?
Respuesta: Lo podemos hacer usando el módulo DBI con lo cual al principio del script debemos llamar al módulo

#!/usr/bin/perl
use DBI;

#Luego creamos unas variables con la info de la base de datos...

my $db_name = "nombre_de_la_database";
my $db_user = "nombre_de_usuario";
my $db_pass = "contraseña_password";
my $db_driver = "mysql"; #puede ser cualquier otra

#Ahora simplemente debemos conectarnos

Código:
my $dbh = DBI->connect("dbi:$db_driver:$db_name",$db_user,$db_pass) || &error('conect','DataBase');
print "estoy conectado!!!!!";
$dbh->disconnect || &error('disconect','database');
__________________
Esteban Quintana

Última edición por monoswim; 20/07/2004 a las 13:58
  #32 (permalink)  
Antiguo 20/07/2004, 14:03
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Bases de datos
Pregunta: Como realizar una consulta a la base de datos ?
Respuesta: Seguimos usando el módulo DBI...

Código:
my $dbh = DBI->connect("dbi:$db_driver:$db_name",$db_user,$db_pass) || &error('conect','DataBase');
my $sth = $dbh->prepare("SELECT * FROM personas ORDER BY id") || &error('preparar','sql querry');
$sth->execute() || &error('execute',$dbh->errstr);
while (@db_registro = $sth->fetchrow_array()) {
     print "clientes: $db_registro[0] - nombre: $db_registro_[1] <br>\n";
}
$sth->finish() || &error('finish','sql querry');
$dbh->disconnect || &error('disconect','database');
__________________
Esteban Quintana
  #33 (permalink)  
Antiguo 21/07/2004, 15:07
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Enviar E-Mails
Pregunta: Como puedo en enviar un mail con windows?
Respuesta: Es muy común que los formularios web se envíen a una casilla de mail, para ello necesitamos instalar el módulo Mail::Sendmail...

use Mail::Sendmail;

Código:
# Creamos el hash con nuestro mensajes
my %mail = (
To => '[email protected]',
From => '[email protected]',
Subject => 'Asunto del mensaje',
Message => "mensaje",
Smtp => 'www.misitio.com'
);

# Envíar el mensaje
unless (sendmail(%mail)) {
# Error!
print "Content-type: text/html\n\n";
print "ERROR\n";
exit(1);
}

# Envío correcto.
print "Location: http://www.misitio.com/gracias.html \n\n";
exit(1);
Para más información, checkeen el tutorial que escribio kidd en
http://perlenespanol.baboonsoftware....ut/000050.html
Gracias kidd !!!
__________________
Esteban Quintana
  #34 (permalink)  
Antiguo 21/07/2004, 18:03
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: funciones y subrutinas
Pregunta: Como especifico el valor de retorno?
Respuesta: Se puede especificar el valor o los valores que la subrutina nos devolverá al ser ejecutada, siempre mediante la función return()

Código:
sub devuelve (){
     my @valores = ('hola','gente','hermosa','inteligente');
     return('palabra',@valores);
     #como vemos podemos retornar strings o variables
}
Ahora para almacenar esa información que nos devuelve la subrutina la llamamos de la siguiente manera
Código:
my @valores_retornados = &devuelve();
__________________
Esteban Quintana

Última edición por monoswim; 21/07/2004 a las 18:05
  #35 (permalink)  
Antiguo 23/07/2004, 06:52
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Principiantes -> Formularios
Pregunta: Como puedo mandar los datos del formulario a mi E-Mail?
Respuesta: Como ya sabemos el documento HTML que tiene el formulario se ejecuta del lado del cliente, ahora bien, para emviar el mail necesitamos un Script de perl, asp o php que se ejecute del lado del servidor que tome los datos del formulario y los envíe por E-Mail. (acá veremos solo el de perl.)

Ahora bien, para que esto funcione necesitamos tener un servidor que sea apto para ejecutar Script CGI de PERL, si tenemos un servidor gratuito es muy difícil que lo tenga, así que debemos o cambiar de servidor o usar un servicio gratuito como el de www.melodysoft.com

Si podemos ejecutar perl podemos encontrar muchos script desde gratuitos hasta pagos, como ser el FormMail de www.scriptarchive.com o el FormProcesor de http://cgi.baboonsoftware.com

La última opción y más interesante es programar el script por ustedes mismos...Para ello encontrarán mucha info en este faq de www.forosdelweb.com y en los tutoriales de www.perlenespanol.com
__________________
Esteban Quintana
  #36 (permalink)  
Antiguo 02/08/2004, 17:52
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Archivos
Pregunta: Que modos hay para abrir un archivo ?
Respuesta: existen básicamente 5 modos...

Código:
open (DATABASE, "<$file")
Abre el archivo de modo solo lectura, es el valor que viene predeterminado

open (DATABASE, ">$file")
Abre el achivo para escritura, borrando todo su contenido actual

open (DATABASE, ">>$file")
Abre el archivo para escritura y se posiciona al final del mismo, para agregarle nueva info a la que ya tiene el archivo

open (DATABASE, "+>$file")
Abre el archivo de modo lectura y escritura, si el archivo no existe lo creará

open (DATABASE, "+<$file")
Abre el archivo de modo lectura y escritura, si el archivo no existe genera un error
__________________
Esteban Quintana
  #37 (permalink)  
Antiguo 03/08/2004, 06:08
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Variables Array
Pregunta: Como puedo ordenar los elementos de un array?
Respuesta: Para ordenar los elementos de un array tenemos 2 funciones muy fáciles de usar:

sort() Devuelve los elementos ordenados del array que le coloquemos como parámetro
reverse() Devuelve los elementos en el orden contrario al que están en el array que le pasamos como parámetro

Código:
#Si lo queremos en otros arrays:
@b = sort(@a);
@c = reverse(@b);

#Si lo queremos en el mismo array, sin copiarlo:
@a = sort(@a);
@a = reverse(@);

#si lo queremos hacer en un solo paso
@a = reverse sort @a;
Este último ejemplo devuelve los elementos ordenados desendentemente en un solo paso y en el mismo array
__________________
Esteban Quintana
  #38 (permalink)  
Antiguo 03/08/2004, 07:29
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Variables Escalares
Pregunta: Como eliminar el último caracter y los saltos de línea de un string?
Respuesta: Esta es usa función muy sencilla pero muy util para eliminar los saltos de línea que suelen tener los escalares cuando leemos un archivo de texto.

Se hace mediante la función chop, que devuelve el último caracter del string (el que elimina)

Código:
my $ultimo_caracter = chop($string);
Otra forma de eliminar todos los saltos de línea que puede tener un string es con expresiones regulares, de la siguiente manera:

Código:
$string =~ s/\n//g;
__________________
Esteban Quintana
  #39 (permalink)  
Antiguo 03/08/2004, 08:24
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Variables Escalares
Pregunta: Como saber la longitud de un string?
Respuesta: Es muy importante saber cuan grande es un escalar, sobretodo cuando lo vamos a almacenar en una base de datos, además se usa por cuestriones de seguridad para no usar memoria de más...Esto se puede calcular de una manera muy simple con la función length()

Código:
my $string = "diente";
my $contador = length($string);
print "$contador";
Ese ejemplo va a imprimir 6
__________________
Esteban Quintana
  #40 (permalink)  
Antiguo 03/08/2004, 14:36
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Arvhivos y Directorios
Pregunta: Como saber si el archivo o directorio existe y/o es modificable?
Respuesta: En perl tenemos los llamados operadores de comprobación para sacar algunas informaciones interesantes sobre los archivos y directorios:

Se utilizan de la siguiente manera



Código:
my $file = "archivo.txt"; 
if (e- $file) { 
   # OK, el archivo existe 
   open ... 
} 
else { 
   print "el archivo $file no existe.\n"; 
}
De esta forma solo abrimos el archivo si este existe, sino imprimimos un mensaje. Con el operador -e podemos comprobar la existencia de archivos y directorios, y con el operador -w podemos saber si el archivo en cuestión es modificable o no lo es.
__________________
Esteban Quintana
  #41 (permalink)  
Antiguo 04/08/2004, 06:43
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Bases de datos
Pregunta: Como realizar una consulta por referencia ?
Respuesta: Realizar una consulta por referencia es muy importante para optimizar el uso de la memoria, ya que usamos los datos directamente desde la base de datos, sin cargarlos en variables de nuestro script, copiando la información que sería muy pesado para la memoria ram.

Código:
my $db_registro_ref;
my $dbh = DBI->connect("dbi:$db_driver:$db_name",$db_user,$db_pass) || &error('conect','DataBase');
my $sth = $dbh->prepare("SELECT * FROM personas ORDER BY id") || &error('preparar','sql querry');
$sth->execute() || &error('execute',$dbh->errstr);
while ($db_registro_ref = $sth->fetchrow_arrayref()) {
     print "clientes: $$db_registro[0] - nombre: $$db_registro_[1] <br>\n";
}
$sth->finish() || &error('finish','sql querry');
$dbh->disconnect || &error('disconect','database');
Como vemos lo usamos desde una referencia, de manera que se haga mucho más rápido y eficiente.
__________________
Esteban Quintana
  #42 (permalink)  
Antiguo 04/08/2004, 09:35
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Formularios
Pregunta: Que parámetros le paso al CGI desde mi Formulario ?
Respuesta: Esta es una pregunta más de HTML que de PERL, pero la suelen hacer...Es que la mayoría de los script para enviar formularios por mail se basan en el famoso FormMail.pl . Con lo cual en el HTML le deberíamos pasar algunos valores:

Código:
<form ACTION="Dirección exacta del script .cgi o .pl" method="post" name="FORMULARIO">
       <input type="hidden" name="recipient" value="Casillas de Mail a las cuales llegaran los datos (separaadas por coma)">
       <input type="hidden" name="redirect" value="Dirección exacta de la página de agradecimiento como ser http://www.misitio.com/gracias.html">
       <input type="hidden" name="subject" value="Mensaje de Asunto">
__________________
Esteban Quintana

Última edición por monoswim; 12/08/2004 a las 11:06
  #43 (permalink)  
Antiguo 04/08/2004, 17:36
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: manejo de Código HTML
Pregunta: Como sacar la información que hay en los tags (x)html ?
Respuesta: Es muy fácil de hacer mediante una expresión regular, supongamos que tenemos todo el código html de una página almacenada en un $escalar...Debemos definir cual es el tag inicial y el de cierre...

Código:
my $string_html = '<p>blabla...</p>...<p>bla...</p>...<p>jeje</p>';

my $tag_inicial = '<p>';
my $tag_final = '</p>';

my @parrafos = $string_html =~ m/$tag_inicial(.*?)$tag_final/mgi;
Cada uno de los elementos del array va a tener a cada uno de los párrafos de la página html.

Créditos: Kidd.
__________________
Esteban Quintana

Última edición por monoswim; 18/08/2004 a las 07:24
  #44 (permalink)  
Antiguo 05/08/2004, 09:05
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: CGI (Interface de pasarela común)
Pregunta: Como puedo hacer que mi script solo se ejecute en mi página web ?
Respuesta: Se hace usando la variable de entorno $ENV{'HTTP_REFERER'} que nos dice cual es la página que está pidiendo la ejecución del script...

Código:
my @referers = ('www.tudominio.com.ar', '*.tudominio.com.ar', 'tudiminio.com.ar');
&check_url;

sub check_url {

    my $check_referer = 0;

    if ($ENV{'HTTP_REFERER'}) {
        foreach my $referer (@referers) {
            if ($ENV{'HTTP_REFERER'} =~ m|https?://([^/]*)$referer|i) {
                $check_referer = 1;
                last;
            }
        }
    }
    else {
        $check_referer = 1;
    }

    if ($check_referer != 1) { &error('verificar','host') }
}
__________________
Esteban Quintana
  #45 (permalink)  
Antiguo 05/08/2004, 11:52
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Variables Escalares (strings)
Pregunta: como separar o juntar strings ?
Respuesta: Dos de las funciones más comunes en programación son split() y join() que nos permiten dividir un string en varios substrings y juntar dichos substrings en un solo string respectivamente.

Como se imaginarán debe haber una expresión que la utilicemos como delimitador entre los strings...

Código:
my @sub_strings = split(/&/, $string_entero);
Este código son separa el $string_entero en cuantas veces aparezca el caracter & (es muy usual separar los strings por salto de linea \n).

Código:
$string_entero = join("y",@strings);
Ahora los juntamos nuevamente ahora juntados por la y (i griega)
__________________
Esteban Quintana
  #46 (permalink)  
Antiguo 05/08/2004, 12:24
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: CGI
Pregunta: Como direccionar la salida del script a un documento .html ?
Respuesta: Es muy común que cuando el script realiza sus taréas devuelva un mensaje de que se realizó todo correctamente...En vez de eso podemos directamente direccionar la salida del script directamente a un documento .html

Esto se puede hacer si devolvemos un encabezado http que le diga al navegador que documento html debe visualizar...

Código:
print "Location: http://www.misitio.com/gracias.html\n\n";
Nótese que con este encabezado no debemos imprimir nada más, ni siquiera el print "content-type: text/html \n\n";
__________________
Esteban Quintana
  #47 (permalink)  
Antiguo 20/08/2004, 06:41
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Variables Array o Vectores
Pregunta: Como eliminar todos los elementos de un array ?
Respuesta: Esta es una pregunta muy frecuente que me hacer y la verdad es que la respuesta es más que simple, le volvemos a asignar valores 1 o 2 de forma conjunta al array y automáticamente esos 1 o 2 valores son los únicos que tiene, y los demás son eliminados, sin tener la necesidad de eliminar uno por uno a cada elmento.

Código:
my @array = ('1','2','3','4','5','6','7','8');
@array = ('g','y');
print @array;
Eso efectivamente imprime solamente g y, fueron eliminaros el 3,4,5,6,7,8
__________________
Esteban Quintana
  #48 (permalink)  
Antiguo 20/08/2004, 10:24
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: CGI (Interface de pasarela común)
Pregunta: como insertar el resultado de un script en un .HTML ?
Respuesta: Se puede hacer mediante una simulación de javascript, desde el HTML llamamos a un script de PERL como si fuera un javascritp, y el código que devuelva el scirpt de perl será con sintaxis de javascript...

En el script colocamos:



Código:
#!/usr/bin/perl

($sec,$min,$hora,$mdia,$mon,$ano,$wdia,$ydia,$isdst) = localtime (time);
@meses = ('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
@dias = ('Domingo','Lunes','Martes','Miercoles','Jueves','Viernes','Sabado');

$ano += 1900;

print "content-type: text/html \n\n";

print "document.write(\'<font color=\"\#00FFFF\">$dias[$wdia], $mdia de $meses[$mon]</font></b></td>\') ";

exit;
y en el Código HTML de la página llamamos a es script:

Código:
<script language="javascript" src="http://www.dominio.com/cgi-bin/fecha.pl"></script>
Para hacer que esto funcione debemos tener un servidor seguro (SSI)
__________________
Esteban Quintana
  #49 (permalink)  
Antiguo 23/08/2004, 08:11
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Principiante
Pregunta: Como puedo editar un script ?
Respuesta: Para editar un script no necesitamos ningún programa especial, ya que son archivos de texto común, podemos usar cualquier editor de texto simple como el block de notas o el wordpad de windows o el emac de linux.

Si quieren checkear la sintaxis bájense el intérprete de perl (gratis), instálenlo, y ejecuten el script a ver si nos tira el resultado que queríamos o nos tira algún error.

para escribir su primer programa usen el hola mundo:
Código:
#!c:/perl/bin/perl.exe

print "content-type: text/html \n\n";
print "hola mundo !!!";
exit();
Con ese simple script podemos checkear que ande todo correctamente, para largarnos a programar en perl sin problemas.
__________________
Esteban Quintana

Última edición por monoswim; 23/08/2004 a las 08:14
  #50 (permalink)  
Antiguo 24/08/2004, 07:29
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Principiante
Pregunta: Como puedo verificar la sintaxis de un script ?
Respuesta: Para hacerlo debemos si o si tener instalado el intérprete de PERL en nuestra computadora, para eso debemos bajarlo de www.activeperl.com e instalarlo.
Una vez instalado el intérprete podemos un editor de PERL como el de http://www.dzsoft.com/ que tiene una función (f12) que verifica con el intérprete la sintaxis del script, si no tenemos ningún editor lo podemos hacer desde la linea de comandos (MSDOS de windows).

Tenemos que tener el script a verificar en la carpeta en donde instalamos el intérprete (c:/perl por defoult), entonces entramos a esa carpeta (cd.. para ir a la carpeta padre y cd carpeta para entrar a una carpeta)

cd..
cd perl
cd carpeta-del-script
perl script.pl

Esa instrucción "perl script" ejecutará el script y nos devolverá el resultado del mismo, y si tiene un error nos dira exactamente cual es y en que línea se encuentra.
__________________
Esteban Quintana
  #51 (permalink)  
Antiguo 24/08/2004, 09:53
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Principiante
Pregunta: Que es el Content-type: text/html ?
Respuesta: Las cabeceras HTTP nos permiten enviarle información al navegador sobre la información que está por recibir, las más comuner que se usan son:

Content-type: text/html # Documento HTML
Content-type: text/xml # Documento XML
Content-type: text/plain # Texto
Content-type: image/gif # Imagen con formato GIF
Content-type: image/jpeg # Imagen con formato JPEG
Content-type: video/mpeg # Vídeo en formato MPEG

Con lo cual si estamos trabajando en un script CGI que devuelve un documento XML este debe tener la cabecera de la siguiente manera

print "content-type: text/xml \n\n"

Así el navegador sabrá como manejar el documento.
__________________
Esteban Quintana

Última edición por monoswim; 24/08/2004 a las 09:55
  #52 (permalink)  
Antiguo 25/08/2004, 06:38
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: CGI (Interface de pasarela común)
Pregunta: Como definir el flujo del script CGI dependiendo de lo que el usuario desee ?
Respuesta: Cuando hacemos un script CGI generalmente terminamos con muchas subrutinas que se deben ejecutar en algun momento dado, dependiendo de algún hecho, como ser que el usuario esté registrado o sea un invitado. Esto se hace generalmente evaluando una variable que le pasaremos el valor desde nuestro documento HTML ya sea por get o por post.

Primero hacemos la entrada de datos tanto por get o por post:
Código:
        my (@pairs,$buffer,$pair,$name,$value,%input_data);

        if ($ENV{'REQUEST_METHOD'} eq 'GET') {

                @pairs = split(/&/, $ENV{'QUERY_STRING'});

        }elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {

                read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
                @pairs = split(/&/, $buffer);

        }else {

                &error('leer','datos');

        }

        foreach $pair (@pairs) {
                ($name, $value) = split(/=/, $pair);

                $name =~ tr/+/ /;
                $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
                $name =~ tr/\0//d;

                $value =~ tr/+/ /;
                $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
                $value =~ tr/\0//d;
                $value =~ s/\n//g;

                $input_data{$name} = $value;
        }
Ahora tenemos una variable %input_data que tiene dodos los valores que le pasamos al script, ahora hay que evaluarla y dependiendo de su valor vamos a llamar a una función y otra:

Código:
       if ($input_data{'action'} eq 'iniciar_sesion') {
                 &iniciar_sesion();
                 &registrar_sesion();
                 &imprimir_mensajes();
       }
       elsif ($input_data{'action'} eq 'cerrar_sesion') {
                 &cerrar_sesion();
       }
       else {
                 &continuar_sesion();
       }
       exit(1);
Como ven acá evalué la variable $input_data{'action'} que es lo que le envío desde el documento HTML
__________________
Esteban Quintana
  #53 (permalink)  
Antiguo 27/08/2004, 08:09
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Principiante
Pregunta: Como instalar un script en mi servidor web ?
Respuesta: Una vez que tenemos el script CGI, debemos instalarlo en el servidor web de nuestro sitio...Para lo cual debemos:

1) Subirlo por FTP a la carpeta que el servidor web tiene para los scripts CGI, generalmente es la carpeta CGI-BIN, pero puede ser LOCAL-CGI o algo así...

2) Cuando los subimos por FTP debemos hacerlo en modo ASCII, como ya sabemos el script es un archivo de texto como el HTML, razón por la cual debe ser subido en modo ASCII

3) Cambiarle los permisos a chmod 755 (en linux), esto es para que el script pueda ser ejecutado. Lo podemos cambiar mismo delde el FTP, haciendo botón derecho del mouse y viendo las propiedades del script (Esto en la mayoría de los ftps, como ser el Leap FTP)
__________________
Esteban Quintana
  #54 (permalink)  
Antiguo 14/09/2004, 14:10
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Archivos y Directorios
Pregunta: Como renombrar o eliminar un archivo ?
Respuesta: En PERL tenemos 2 funciones muy fásiles de usar que nos permiten cambiarle el nombre a un archivo (rename) y eliminar un archivo (unlink)

Código:
rename("$nombre_actual","$nuevo_nombre") || &error('renombrar','archivo');

unlink("$archivo_a_aliminar") || &error('eliminar','archivo');;
__________________
Esteban Quintana
  #55 (permalink)  
Antiguo 14/09/2004, 14:16
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Archivos y Directorios
Pregunta: Como eliminar todo un directorio ?
Respuesta: De la misma manera que unlink nos elimina un archivo, rmdir con elimina un directorio...

Código:
rmdir("images") || &error('eliminar','directorio');
__________________
Esteban Quintana
  #56 (permalink)  
Antiguo 08/10/2004, 06:12
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Links
Pregunta: Un script para enviar formularios por mail con archivos adjuntos
Respuesta: Con los archivos como FormMail podemos enviar los formularios por mail pero no ponerle ningún archivo adjunto, ahora nuestro amigo TUSHCA ha encontrado un script gratuito que si lo permite

Acá está el link

http://villanos.net/herreria/granero/index.html

Gracias TUSHCA !!!
__________________
Esteban Quintana

Última edición por monoswim; 23/11/2004 a las 08:12
  #57 (permalink)  
Antiguo 13/10/2004, 14:28
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Formularios
Pregunta: Como hacer para que el formulario se envie una sola vez ?
Respuesta: Es muy común que los usuarios clickeen varias veces en el botón de Enviar al ver que los resultados del envío no llegan rápidamente. Mediante un simple script de JavaScript podemos hacer que al enviarse el formulario por primera vez, el botón de enviar quede desabilitado.

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>M o n o S w i m</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language="JavaScript" type="text/javascript">
function bloquear() {
   form1.Submit.disabled = true;
   form1.Submit.value = "Procesando...espera unos segundos";
}
</script>

</head>

<body>
<form name="form1" method="post" action="script.pl" onSubmit="bloquear()">
  <p>
    <input type="text" name="textfield">
  </p>
  <p>
    <input type="submit" name="Submit" value="Submit">
  </p>
</form>
</body>
</html>
__________________
Esteban Quintana

Última edición por monoswim; 14/10/2004 a las 05:44
  #58 (permalink)  
Antiguo 21/11/2004, 19:07
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Principiantes
Pregunta: Un tutorial que empiece desde cero ?
Respuesta: Hace unos días me acordé que había escrito un tutorial sobre como empezar a programar en perl...Es corto y fácil...

http://perlenespanol.baboonsoftware....ut/000080.html

Espero que les sirva...
__________________
Esteban Quintana

Última edición por monoswim; 21/11/2004 a las 19:10
  #59 (permalink)  
Antiguo 23/11/2004, 14:55
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Links
Pregunta: Se puede usar perl para la plataforma .net ?
Respuesta: Claro que se puede, la empresa activestate (la que da perl para windows) sacó PERLNET que nos permite unir perfectamente estas tecnologías...Y como si esto fuera poco, nuestros amigos de la Universidad de Granada, saracor un tutorial online que nos explica el funcionamiento de este sistema.

http://flanagan.ugr.es/perlnet/

Espero que les interese tanto como a mi...
__________________
Esteban Quintana
  #60 (permalink)  
Antiguo 23/11/2004, 15:00
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Tema: Links
Pregunta: Tutoriales de PERL en castellano ?
Respuesta: Desde hace bastante nuestro amigo Kidd empezó con el proyecto de www.perlenespanol.com y ahora ya tiene una gran cantidad de tutoriales que hablan sobre todos los temas...Una muy buena fuente de información en castellano

http://perlenespanol.baboonsoftware.com/tutoriales/

Gracias Kidd !!!
__________________
Esteban Quintana
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:21.