• Publicidad

Duda errores en módulos

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

Duda errores en módulos

Notapor ricar » 2009-10-30 04:01 @209

Hola a todos.

Tengo un par de problemas al compilar varios programas.

La versión que utilizo de Perl es la 5.8.8, no utilizo la última porque utilizo algún módulo que sólo trabaja en esta versión.

El primer problema es que al compilar (con perl2exe) obtengo un error en un programa:
Warning: Can't locate VMS/Filespec.pm
at C:\Perl\lib\diagnostics.pm line 198
@INC = C:\Perl\site\lib, C:\Perl\lib, .


Si lo ejecuto desde el editor funciona perfectamente pero a la hora de compilar...

El segundo problema es similar aunque me sucede a la hora de ejecutar el programa, me aparece un error debido a que no encuentra el módulo Win32::API.
Can't locate loadable object for module Win32::API in @INC (@INC contains: PERL2
EXE_STORAGE C:\Perl\Perl2exe\exe C:\DOCUME~1\uam474\LOCALS~1\Temp/p2xtmp-1776 .)
at C:\Perl\Perl2exe\exe\auditPrivilegesRight.exe line 1


Al principio me daba también al compilar pero se solucionó cuando añadí comentado el path del módulo (solución que encontré en Google).

¿Alguien le ha pasado lo mismo y puede darme alguna indicación de cómo solucionarlo si es posible?

Muchas gracias.

Un saludo,
Ricardo.
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353

Publicidad

Re: Duda errores en módulos

Notapor explorer » 2009-10-30 05:22 @265

Parece ser que es una característica de perl2exe, el no localizar, en algunas ocasiones, los módulos que debe compilar.

Para ello, hay que ayudarle con los comentarios #perl2exe_include, tal como se indica en su página de manual. Intenta siempre primero con la opción del nombre del módulo, y si no funciona, con el camino completo al módulo.

El caso del segundo problema está comentado en la sección de preguntas frecuentes (entre la 18 y la 19). Parece ser que tienes que compilarlo con la opción -tiny.
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

Re: Duda errores en módulos

Notapor ricar » 2009-10-30 06:16 @302

Hola.

Con la opción de comentar "solucioné" el segundo problema; bueno, a medias, porque compila correctamente pero a la hora de ejecutar... probaré lo de la opción -tiny.

Probaré lo que me comentas y me pasaré por aquí para dar feedback del tema.

Muchas gracias.

Un saludo,
Ricar.

Por cierto, se me ha olvidado comentarlo pero ¿cómo incluyo un módulo que no he instalado?

Quiero decir que el módulo VMS::Filespec yo no lo he instalado, por lo que no puedo resolverlo de la forma que comentas. Además si voy a CPAN para bajármelo, lo que me baja es la versión 5.10.1 de Perl.

Un saludo,
Ricar.
Última edición por ricar el 2009-10-31 02:10 @132, editado 1 vez en total
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353

Re: Duda errores en módulos

Notapor explorer » 2009-10-30 08:21 @389

¿No funciona con

#perl2exe_include VMS::Filespec

?
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

Re: Duda errores en módulos

Notapor ricar » 2009-10-31 01:11 @091

Lo dicho, en realidad no lo he instalado, imagino que irá embebido en Perl. Recuerdo que lo estuve buscando y no encontré nada.

En cualquier caso, volveré a intentarlo a ver si descubro algo.

EDITO: Busco el fichero filespec.pm y no lo encuentro en mi versión 5.8.9 de Perl.
En la versión 5.10 sí está, así que cuando pueda probaré a hacer un copy/paste a ver si con eso sirve. Poco elegante pero a lo mejor funciona.

Muchas gracias.

Un saludo,
Ricar.
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353

Re: Duda errores en módulos

Notapor explorer » 2009-10-31 04:09 @214

Yo sospecho que esa es la razón: no funcionará a menos que lo tengas instalado. No he visto por ningún sitio que ese programa sea capaz de hacer un paquete con módulos que no estén en el sistema. Vamos, que él mismo los baje e instale para luego empaquetarlos.

Recuerda que también existe el PAR.
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

Re: Duda errores en módulos

Notapor ricar » 2009-10-31 09:29 @437

Sí, está claro pero no entiendo que funcione correctamente desde el editor de Perl y cuando lo compile me solicite dicho módulo. He ahí la cuestión.

En fin, seguiré investigando.

Ya he empezado a estudiar el PAR por si me es más útil que el otro programa.

Muchas gracias.

Un saludo,
Ricar.
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353

Re: Duda errores en módulos

Notapor explorer » 2009-11-01 12:31 @563

Los módulos puedes estar en casi cualquier sitio. Basta con definir la variable de entorno PERL5LIB, o indicar dentro del programa un lugar donde pueda encontrarlos con la ayuda de 'use lib', dejarlos en el mismo directorio donde está el programa o en cualquier otro directorio indicado por la variable @INC.

Podrían incluso estar incrustados en el propio programa.
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

Re: Duda errores en módulos

Notapor ricar » 2009-11-02 03:38 @193

Hola explorer.

No tengo en mi equipo el módulo VMS, y lógicamente no encuentro el fichero filespec.pm.

Pero esa no es realmente la cuestión. Mi duda estriba en que si el programa requiere dicho módulo no me funcionaría o me indicaría que necesita el módulo mencionado, tanto si lo ejecuto desde mi editor de Perl como si lo compilo (.exe).

Pero lo que no entiendo que es que desde el editor funcione correctamente pero a la hora de compilar me diga que lo necesita.

No sé si me he explicado.

Muchas gracias por tu ayuda.

Un saludo,
Ricar.
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353

Re: Duda errores en módulos

Notapor explorer » 2009-11-02 06:16 @302

Cabe la posibilidad de que el editor mantenga su propia distribución de Perl en sus directorios, y allí sí que se encuentren esos módulos.

Otra cosa es que ese módulo realmente lo necesites. Si hablas de filespec y VMS, parece como si tu programa necesitara comprobar cosas de los sistemas de ficheros del sistema operativo VMS.

Si no es el caso, entonces no importa que esté instalado o no ese módulo. El problema está entonces en que al ejecutar el programa, lo solicite y no continúe porque no lo encuentra.

Una forma de solventarlo es averiguar dónde usamos filespec y sustituirlo por otro procedimiento.

Otra forma sería crear un módulo VMS que no hiciese nada. Algo como
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. package VMS::Filespec;
  2.  
  3. 1;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Y lo guardamos con el nombre VMS/Filespec.pm en el mismo directorio del programa.

O averiguar por qué filespec necesita de ese módulo. A propósito... ¿qué es filespec.pm? No lo encuentro en CPAN.

Actualización: me respondo a mí mismo. No es filespec, sino File::Spec.

Al comienzo de ese módulo está esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my %module = (MacOS   => 'Mac',
              MSWin32 => 'Win32',
              os2     => 'OS2',
              VMS     => 'VMS',
              epoc    => 'Epoc',
              NetWare => 'Win32', # Yes, File::Spec::Win32 works on NetWare.
              symbian => 'Win32', # Yes, File::Spec::Win32 works on symbian.
              dos     => 'OS2',   # Yes, File::Spec::OS2 works on DJGPP.
              cygwin  => 'Cygwin');


my $module = $module{$^O} || 'Unix';

require "File/Spec/$module.pm";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Es decir, que se carga el módulo correspondiente al sistema operativo que estés en ese momento. Si quiere cargar VMS, es porque en ese momento piensa que estás en VMS.

En cambio, cuando estás con el editor, seguro que carga otro (UNIX o Windows) y ese módulo seguro que lo tiene instalado.

Pero... estaríamos hablando de File::Spec::VMS, no de VMS::Filespec.

Ahora sí que estoy perdido...

¿No puedes mostrar la parte de código que da el fallo?
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

Siguiente

Volver a Módulos

¿Quién está conectado?

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