Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Web » Recoger datos de un formulario Responder al tema
Nuevo tema


Página 2 de 2  [ 24 mensajes ]  Ir a página Anterior  1, 2
 
Nota Jue May 27, 2010 1:13 pm
Avatar de Usuario
Administrador
Registrado: Dom Jul 24, 2005 6:12 pm
Ubicación: Valladolid, España
Mensajes: 9518
Re: Recoger datos de un formulario
El error dice que el programa no encuentra al módulo DBI en ninguno de los directorios indicados.

Puede que esté, pero no en esos directorios.

Si está en otro directorio, se lo puedes indicar dentro del programa, con la ayuda de 'use lib "directorio";'.

_________________
JF^D Perl programming


Nota Vie May 28, 2010 2:20 am

Perlero Nuevo
Registrado: Lun May 24, 2010 11:30 am
Mensajes: 9
Re: Recoger datos de un formulario
Pues eso es lo raro, resulta que si está en alguno de esos directorios. He mirado en /usr/perl5/5.8.4/lib por probar, y esto es lo que contiene:
Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
AnyDBM_File.pm       ExtUtils             Sun                  cacheout.pl          newgetopt.pl
Attribute            Fatal.pm             Switch.pm            charnames.pm         open.pm
AutoLoader.pm        File                 Symbol.pm            complete.pl          open2.pl
AutoSplit.pm         FileCache.pm         Term                 constant.pm          open3.pl
B                    FileHandle.pm        Test                 ctime.pl             overload.pm
Benchmark.pm         Filter               Test.pm              dbm_filter_util.pl   perl5db.pl
CGI                  FindBin.pm           Text                 diagnostics.pm       pod
CGI.pm               Getopt               Tie                  dotsh.pl             pwd.pl
CPAN                 Hash                 Time                 dumpvar.pl           shellwords.pl
CPAN.pm              I18N                 UNIVERSAL.pm         exceptions.pl        sigtrap.pm
Carp                 IO                   Unicode              fastcwd.pl           sort.pm
Carp.pm              IPC                  User                 fields.pm            stat.pl
Class                List                 abbrev.pl            filetest.pm          strict.pm
DB.pm                Locale               assert.pl            find.pl              subs.pm
DBI.pm               Math                 attributes.pm        finddepth.pl         syslog.pl
DBM_Filter           Memoize              auto                 flush.pl             tainted.pl
DBM_Filter.pm        Memoize.pm           autouse.pm           getcwd.pl            termcap.pl
Devel                NEXT.pm              base.pm              getopt.pl            timelocal.pl
Digest               Net                  bigfloat.pl          getopts.pl           unicore
Digest.pm            PerlIO               bigint.pl            hostname.pl          utf8.pm
DirHandle.pm         PerlIO.pm            bigint.pm            i86pc-solaris-64int  utf8_heavy.pl
Dumpvalue.pm         Pod                  bignum.pm            if.pm                validate.pl
Encode               Scalar               bigrat.pl            importenv.pl         vars.pm
English.pm           Search               bigrat.pm            integer.pm           vmsish.pm
Env.pm               SelectSaver.pm       blib.pm              less.pm              warnings
Exporter             SelfLoader.pm        bytes.pm             locale.pm            warnings.pm
Exporter.pm          Shell.pm             bytes_heavy.pl       look.pl

y sin embargo salta ese error.

He probado con use lib "/usr/perl5/site_perl/5.8.4"; y ya no salta ese error, ahora hay otro, ¡je,je!, un error de sintaxis en esta línea:
my $sth = $dbh->prepare("INSERT INTO cintas ("nombre","almacenamiento") VALUES (param(nombre), param(almacenamiento))");

¿¿Qué error le ves??

Saludos


Nota Vie May 28, 2010 4:06 am
Avatar de Usuario
Administrador
Registrado: Dom Jul 24, 2005 6:12 pm
Ubicación: Valladolid, España
Mensajes: 9518
Re: Recoger datos de un formulario
El error está en que Perl no interpola llamadas a funciones dentro de cadenas de texto (bueno, sí que puede, pero es muy feo). Y además hay comillas dobles dentro de otras comillas dobles.

Prueba a escribirlo así (no probado):
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. my $sth = $dbh->prepare('INSERT INTO cintas ("nombre", "almacenamiento") VALUES (?,?)');
  2. $sth->execute( param(nombre), param(almacenamiento) );

Así, además, habrás aumentado el nivel de seguridad, ya que DBI se ocupará de escapar los argumentos.

_________________
JF^D Perl programming


Nota Vie May 28, 2010 5:17 am

Perlero Nuevo
Registrado: Lun May 24, 2010 11:30 am
Mensajes: 9
Re: Recoger datos de un formulario
Buenas, muchas gracias por la ayuda que me estás prestando, voy aprendiendo poco a poco, ¡je,je!

Sigo teniendo el mismo problema con el módulo DBI; he probado con use DBI (así simplemente me dice que no encuentra el módulo) con use lib "/usr/perl5/site_perl/5.8.4; y ahora también con use lib "/usr/perl5/site_perl/5.8.4/DBI, y el error ahora es:
Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
Status: 500 Content-type: text/html
Software error:

Can't locate object method "connect" via package "DBI" (perhaps you forgot to load "DBI"?) at /var/apache/cgi-bin/oracle.pl line 32.

For help, please send mail to the webmaster (you@yourhost.com), giving this error message and the time and date of the error.


Nota Vie May 28, 2010 6:07 am
Avatar de Usuario
Administrador
Registrado: Dom Jul 24, 2005 6:12 pm
Ubicación: Valladolid, España
Mensajes: 9518
Re: Recoger datos de un formulario
A ver... el use lib sirve para decir dónde tiene que mirar Perl para buscar los módulos. Pero a continuación debes cargarlo:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
use lib '/usr/perl5/site_perl/5.8.4';
use DBI;


Una cosa... en la lista de módulos mostrada antes, no aparece el DBD::Oracle, que es el que DBI necesitará. Es posible que los errores que ves del DBI en realidad se refieren a que no encuentra DBD::Oracle.

_________________
JF^D Perl programming


Nota Lun May 31, 2010 12:08 pm

Perlero Nuevo
Registrado: Lun May 24, 2010 11:30 am
Mensajes: 9
Re: Recoger datos de un formulario
Buenas, explorer, parece que ya encontré cual es el problema: puede que sea un problema de versiones. Mi versión de Perl es la v5.8.4, y mi módulo DBI solo funciona correctamente con la v5.8.3, ¿tú qué crees?

Y ya de paso, ¿me podrías indicar cómo se instala el módulo DBI para la versión de Perl v5.8.4? Es para una máquina Unix. He leído algo por ahí que CPAN es muy fácil, pero no lo entiendo bien.

Muchas gracias por tu ayuda.

Saludos.


Nota Lun May 31, 2010 12:29 pm
Avatar de Usuario
Administrador
Registrado: Dom Jul 24, 2005 6:12 pm
Ubicación: Valladolid, España
Mensajes: 9518
Re: Recoger datos de un formulario
Podría ser ese el error, claro, pero tengo mis dudas... Si DBI necesitara un determinado número de versión de Perl, ya lo diría en el momento de la carga del módulo. Por ejemplo, estoy viendo en CPAN la versión v1.611 de DBI, y en las primeras líneas dice que se requiere una versión de Perl >= v5.8.1.

Otra cosa. ¿Tienes instalado DBD::Oracle? Ese es el controlador que DBI necesita para poder dialogar con la base de datos Oracle. Aunque un poco pesado, es recomendable leerlo porque su instalación no es nada obvia.

Para instalar DBI (y el DBD::Oracle), es muchísimo mejor usar el sistema de paquetería software del propio sistema operativo.

Dices que es un Unix, pero no nos dices qué Unix es. Debes hablar con el administrador del sistema operativo y pedirle que te instale el Perl, DBI y DBD::Oracle más modernos que pueda conseguir para ese sistema operativo.

Se podría intentar instalar con el comando cpan, pero requerirá tener instalado un compilador de C, y algunas librerías más, antes de poder intentar instalarlo.

_________________
JF^D Perl programming


Nota Mar Jun 01, 2010 8:53 am

Perlero Nuevo
Registrado: Lun May 24, 2010 11:30 am
Mensajes: 9
Re: Recoger datos de un formulario
Buenas, la versión de Unix es SunOS. ¿Me podrías explicar, lo más sencillo posible, cómo instalar esos módulos?

Te explico un poco más: yo uso PuTTY (no sé si lo conoces) para conectarme a la máquina. No sé si influirá para poder instalarlo.

Saludos.


Nota Mar Jun 01, 2010 10:48 am
Avatar de Usuario
Administrador
Registrado: Dom Jul 24, 2005 6:12 pm
Ubicación: Valladolid, España
Mensajes: 9518
Re: Recoger datos de un formulario
A ver... no puede ser... SunOS fue reemplazado por Solaris en 1992. ¿Es que tienes una máquina tan antigua funcionando?.

Si fuera realmente un Solaris, esos módulos se instalarían de la misma manera que cualquier otro paquete software para Solaris.

En este artículo se comentan las herramientas gráficas que Solaris tiene para la gestión de esos paquetes. Te vale con sentarte delante de la máquina, y arrancar uno de ellos (siendo el administrador o root del sistema). Seguramente, los nombres de los paquetes que te interesan se parecerán a libdbd-oracle-perl, o perl-dbd-oracle o algo parecido.

Conozco el Putty. Lo utilicé mucho cuando aún usaba Windows. Sirve para abrir una conexión SSH a un servidor. Y esto indica que no tienes acceso directo al servidor con el Solaris. Entonces, deberás buscar en el sistema una herramienta de administración de paquetes software, pero en modo texto. O más rebuscado todavía: Putty permite hacer un túnel XWindow, por lo que podrías arrancar herramientas gráficas en tu ordenador (teniendo instalado antes un servidor de X en tu ordenador).

No sé mucho más de Solaris. Solo lo he manejado una vez, una instalación desde cero, en un x86. Lo que sí recuerdo es que la gestión de paquetes era un poco pesada y que tuve que buscar mucha información por Internet.

El tema del Oracle, en cambio, es más problemático, en caso de que no lo encuentres entre la paquetería del sistema. Si ocurre eso, antes de intentar bajarlo y compilarlo por tu cuenta, mira a ver si en el directorio de instalación de Oracle existe alguna carpeta llamada perl. He visto en algunas distribuciones de Oracle que traen una copia del intérprete perl, una versión de DBI y otra de DBD::Oracle, suficientes y probadas para que funcionen en ese Oracle. Puede ser una buena opción, si tienes la suerte de encontrarlo en el Oracle de tu servidor.

Y si no se encuentra de ninguna manera (ni buscando en Google), pues no te queda otra que bajarte desde CPAN la distribución de DBD::Oracle y seguir los pasos de instalación indicados en el README. Hay algunos foros en Internet donde comentan los pasos y los problemas que van surgiendo en esa compilación.

P.D. Es sorprendente que todavía existan servidores Solaris... los datos de hace un año indicaban que el porcentaje de mercado de ese sistema operativo era del 0.01%. En el mercado de UNIX, Linux tiene el 90%, y Solaris está, junto con el resto de UNIX propietarios, en un reducido 5%.

A ver si hay alguien más en el foro que pueda ayudarte.

_________________
JF^D Perl programming


Responder al tema  [ 24 mensajes ]  Ir a página Anterior  1, 2

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:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO