Página 1 de 1

Error unpack (opción "Q")

NotaPublicado: 2013-01-17 08:51 @410
por ricar
Hola a todos.

Tengo un problema. Cuando ejecuto un script obtengo el siguiente error:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Invalid type 'Q' in unpack at...
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Por lo que leo en el módulo dice lo siguiente:
Q: An unsigned quad value. (Quads are available only if your system supports 64-bit integer values _and_ if Perl has been compiled to support those. Causes a fatal error otherwise.)

El caso es que ejecuto el script en dos máquinas de 64bits, una de ellas con un Win de 32bits y la otra con un Win de 64bits.

¿Alguna idea para solucionar el problema?

Saludos,
Ricar

Re: Error unpack (opción "Q")

NotaPublicado: 2013-01-17 10:00 @458
por explorer
Ejecuta

perl -V

y busca por el texto 'use64'. Si pone 'define', es que estás usando un Perl con soporte para 64 bits.

Re: Error unpack (opción "Q")

NotaPublicado: 2013-01-17 10:11 @466
por ricar
Hola explorer.

¿Te refieres a estos parámetros?
use64bitint=undef use64bitall=undef


Parece que no utilizo soporte 64. ¿Habría algún modo de "activarlo"?

Por cierto, estoy utilizando perl 5.8.8

Saludos,
Ricar.

Re: Error unpack (opción "Q")

NotaPublicado: 2013-01-17 13:07 @588
por explorer
ricar escribiste:¿Te refieres a estos parámetros?
use64bitint=undef use64bitall=undef
Sí, son esos. Y muestran que estás usando un Perl sin soporte para 64 bits.

ricar escribiste:Parece que no utilizo soporte 64. ¿Habría algún modo de "activarlo"?

Por cierto, estoy utilizando perl 5.8.8
No, no hay manera de activarlo. Solo tienes las opciones de compilar un Perl de 64 bits, o mucho mejor, bajarte una distribución nueva de Perl, con soporte para 64 bits.

Como estás en Windows, puedes elegir entre la de ActiveState y la Strawberry (humm.. creo que hay alguna más...)

A propósito, la versión 5.8.8 es de hace muchos años. La última versión estable es la Perl v5.16.2

Re: Error unpack (opción "Q")

NotaPublicado: 2013-01-17 14:53 @662
por ricar
Utilizo esa versión por incompatibilidad de algún módulo que utilizo.

Por eso al menos por el momento tendría que solucionar el problema con esa versión.
Saludos,
Ricar.

Re: Error unpack (opción "Q")

NotaPublicado: 2013-01-18 04:39 @236
por salva
Math::Int64 provee la función net_to_int64 que permite convertir una cadena de 8 bytes en un entero de 64 bits.

Otra opción, si no te importa perder algo de precisión es desempaquetarlo como dos enteros de 32 bits y luego convertirlos en uno de punto flotante (que puede representar con exactitud enteros menores que (1<<52) ) tal y como sigue:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my ($low, $high) = unpack('NN', $str);
my $i64 = ($high << 32) + $low;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Re: Error unpack (opción "Q")

NotaPublicado: 2013-01-21 11:03 @502
por ricar
Muchas gracias a ambos.

Creo que la última respuesta es válida para mis intereses :).

El problema en cualquier caso no son los 64 bits, porque también me falla en 32 bits :(

Por cierto... por no abrir otro hilo. Estoy obteniendo otro error sobre el mismo programa:
Can't call method "GetValue" without a package or object reference at


El caso es que me falla en una sola máquina, en el resto me va bien. ¿Alguna idea, sugerencia?

Muchas gracias.

Saludos,
Ricar.

Re: Error unpack (opción "Q")

NotaPublicado: 2013-01-21 14:34 @648
por explorer
El error es claro: has llamado a un método sobre algo que no es un objeto, o es una variable que debería ser un objeto pero falló en la instanciación del objeto.

Re: Error unpack (opción "Q")

NotaPublicado: 2013-01-21 15:42 @695
por ricar
Sí, pero sólo falla en una máquina, en el resto funciona :shock: .

Bueno, a ver si mañana lo veo más claro.

Saludos,
Ricar.