• Publicidad

Error unpack (opción "Q")

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Error unpack (opción "Q")

Notapor ricar » 2013-01-17 08:51 @410

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
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353

Publicidad

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

Notapor explorer » 2013-01-17 10:00 @458

Ejecuta

perl -V

y busca por el texto 'use64'. Si pone 'define', es que estás usando un Perl con soporte para 64 bits.
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: Error unpack (opción "Q")

Notapor ricar » 2013-01-17 10:11 @466

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.
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353

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

Notapor explorer » 2013-01-17 13:07 @588

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
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: Error unpack (opción "Q")

Notapor ricar » 2013-01-17 14:53 @662

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.
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353

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

Notapor salva » 2013-01-18 04:39 @236

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
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

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

Notapor ricar » 2013-01-21 11:03 @502

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.
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353

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

Notapor explorer » 2013-01-21 14:34 @648

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.
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: Error unpack (opción "Q")

Notapor ricar » 2013-01-21 15:42 @695

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.
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353


Volver a Avanzado

¿Quién está conectado?

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