Página 1 de 1

Error de perl58.dll al probar archivo pl por línea

NotaPublicado: 2009-11-24 19:02 @835
por scout
Gente, comenzó a pasar algo raro: me está dando error de perl58.dll, que no lo encuentra...
cuando ejecuto un script, ¿cómo puedo saber dónde está apareciendo o causando el problema...?

Tengo estos use()... les cambié el orden en varios casos y pasa lo mismo...
Lo más raro es que el mismo script no da el error en otro ordenador...
Por ello reisntalé el Perl pero sigue igual...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#use strict;
use DateTime::Format::Strptime;
use DateTime;
#use warnings;
use diagnostics;
use Term::Menu;
use DBI;
use Carp;
use Spreadsheet::WriteExcel;
use Spreadsheet::Write;
use POSIX qw/ strftime /;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Re: Error de perl58.dll al probar archivo pl por línea

NotaPublicado: 2009-11-24 19:13 @842
por erv-Z
man, cuando vayas a usar un módulo no le pongas '#' porque lo que seguirá después de él será tomado como comentario. Te recomiendo que los módulos los vayas probando en uno a uno. Si lo has probado en diferentes PC y ha funcionado, puede ser que en la que no te esté funcionado necesita un módulo que no lo tiene instalado...

El código va de esta manera.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use strict;
use DateTime::Format::Strptime;
use DateTime;
use warnings;
use diagnostics;
use Term::Menu;
use DBI;
use Carp;
use Spreadsheet::WriteExcel;
use Spreadsheet::Write;
use POSIX qw/ strftime /;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


También puedes usar el módulo Module::Load::Conditional para verificar los módulos que tienes instalados.

Re: Error de perl58.dll al probar archivo pl por línea

NotaPublicado: 2009-11-24 19:49 @867
por explorer
erv-Z, si scout ha comentado un par de líneas, es porque no quiere que se ejecuten.

En cuanto los módulos mostrados, hay algunos detalles interesantes...

* Lo normal es que los pragmas strict y warnings sean colocados al principio

* Si pones use DateTime::Format::Strptime; entonces no es necesario poner use DateTime. ¿Por qué? Pues porque ese módulo ya se encarga de importarlo por nosotros

* Lo mismo pasa con Spreadsheet::WriteExcel y Spreadsheet::Write: solo es necesario poner éste último, ya que es un wrapper sobre el primero. Solo hay que el código fuente del módulo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
package Spreadsheet::Write;

require 5.008_001;

use strict;
use IO::File;
use Text::CSV;
use Encode;
use Spreadsheet::WriteExcel;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

o... algo más sencillo... hacer caso de lo que pone en las sinopsis de cada módulo.

Pero lo del mensaje de error no lo entiendo... sería interesante ver el texto completo del error.

Comentas lo del cambio de orden de los módulos, pero no debería afectar en nada más que en la importación de funciones que se llamen igual entre varios módulos. Pero por eso te he comentado que te sobran algunos de ellos.

Re: Error de perl58.dll al probar archivo pl por línea

NotaPublicado: 2009-11-24 20:29 @895
por scout
Poniendo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use strict;
#use warnings;
#use diagnostics;
use Term::Menu;
use DBI;
use Carp;
use POSIX qw/ strftime /;
use DateTime::Format::Strptime;
package Spreadsheet::Write;

require 5.008_001;

use IO::File;
use Text::CSV;
use Encode;
use Spreadsheet::WriteExcel;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Da estos errores:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
C:\Documents and Settings\admin>perl c:\perl\informesv15demo.pl
Global symbol "$rows" requires explicit package name at c:\perl\informesv15demo.
pl line 276.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


y muchas líneas iguales sobre distintas variables... ¿¿??

Y el error: Error al inicial la aplicación porque no no se encontró perl58.dll. La reinstalación de la aplicación puede solucionar el problema... sigue apareciendo... grgrg

Re: Error de perl58.dll al probar archivo pl por línea

NotaPublicado: 2009-11-24 20:40 @903
por erv-Z
¿Línea 276? ¿Por qué no pones el código entero?

Re: Error de perl58.dll al probar archivo pl por línea

NotaPublicado: 2009-11-25 02:07 @130
por scout
Ok, lo depuro por un tema de datos internos y lo pongo...

Re: Error de perl58.dll al probar archivo pl por línea

NotaPublicado: 2009-11-25 04:45 @240
por explorer
El error Global symbol "$rows" requires explicit package name quiere decir que estás usando una variable que no ha sido declarada en ningún sitio.

Es uno de los efectos del use strict;: con él, estamos diciendo que nuestro programa está escrito (o debería estar escrito) de forma estricta. Eso implica, entre otras cosas, que todas las variables deben ser declaradas antes de ser usadas, bien de forma local con my() o de forma global con our() o importadas desde otros paquetes.

El error de la dll es muy posible que sea debido a la línea require 5.008_001;, ya que en ella estás diciendo que quieres usar esa versión de Perl. Haz la prueba de averiguar qué Perl estás usando, ejecutando perl -V. Lo mas seguro es que se arregle con solo quitar la línea.

Re: Error de perl58.dll al probar archivo pl por línea

NotaPublicado: 2009-11-25 16:32 @731
por scout
Uso la versión 5.10; es la misma que uso en otro ordenador y no da el error ese... es de lo más raro...

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
C:\Documents and Settings\admin>perl -v
This is perl, v5.10.1 built for MSWin32-x86-multi-thread
(with 2 registered patches, see perl -V for more detail)
Copyright 1987-2009, Larry Wall Binary build 1006 [291086] provided by ActiveState http://www.ActiveState.com   Built Aug 24 2009 13:48:26
Perl may be copied only under the terms of either the Artistic License or the   GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl".  If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.

C:\Documents and Settings\admin>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Re: Error de perl58.dll al probar archivo pl por línea

NotaPublicado: 2009-11-29 18:19 @805
por scout
Solucionado... Saqué el Perl v5.10.0, borré la carpeta perl, apagué el ordenador y luego instalé de nuevo...

Al menos ahora no aparece el error...