• Publicidad

Valor máximo de una variable Perl $contador

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Valor máximo de una variable Perl $contador

Notapor fgalves » 2007-11-15 02:48 @158

Hola a todos,

El caso es que estoy usando una variable $Counter como contador de transacciones. Me gustaría saber cual es el valor máximo admisible por dicha variable puesto que estoy teniendo problemas (el contador no se corresponde con el verdadero número de líneas, que obtengo al hacer un wc -l).
Dicha variable alcanza valores cercanos a 90.000.000 (siempre por debajo).

Hay un detalle también a tener en cuenta. Dicha variable es guardada en un hash, y dumpeada en un fichero regularmente. A cada nuevo proceso (puesto que se trata de un proceso progresivo, que tiene lugar cada 15 minutos), dicho "dump file" es leído, guardado de nuevo en un hash y dicha variable incrementada.

¿Cuál es el valor máximo que una variable de ese tipo puede tomar?
¿Hay alguna limitación ligada al hecho de guardar dicha variable en un hash y luego dumpearla en un fichero?

Muchas gracias a todos,
¡¡Saludos!!
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Publicidad

Notapor fgalves » 2007-11-15 04:14 @218

Aparentemente Perl no tiene limitación (valor máximo para una variable) siempre y cuando haya memoria para representarlo... Seguiré investigando por otros derroteros...
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Notapor explorer » 2007-11-15 05:38 @276

Los límites se pueden sacar con esta línea:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
perl -le 'use POSIX; print for SHRT_MAX, INT_MAX, LONG_MAX, FLT_MAX, DBL_MAX;'
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Depende del sistema operativo y versión de perl que tengas instalada.

Eso son los valores máximos de:
* entero corto
* entero
* entero largo
* flotante
* doble flotante

Código: Seleccionar todo
32767
2147483647
2147483647
3.40282346638529e+38
1.79769313486232e+308
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

Notapor fgalves » 2007-11-16 09:01 @417

¡¡Muchas gracias Explorer!!
¡Explorer siempre al rescate! Para mi eres el "Perl machine" :)

¡¡Un saludo!!
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Notapor fgalves » 2007-11-16 09:05 @420

He obtenido estos valores:

32767
2147483647
9223372036854775807
3.40282346638529e+38
1.79769313486232e+308

Esta claro que no se trata de un problema relacionado con el límite de dicha variable...
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

perl -V

Notapor Jenda » 2007-11-17 08:43 @405

Si ejecutas
perl -V
y buscas "ivsize" en el resultado, puedes ver cuantos bytes ocupa una variable integer en tu Perl. En caso de ActivePerl para Windows es 4 bytes, que significa que una variable así puede tener valores desde -2**31 hasta 2**31. -2147483648 hasta 2147483648. No creo que tu problema es que el variable no puede contener el número.

Además lo que ocurre cuando produces un número más grande que lo que puede vivir en un integer es que Perl tranquilamente convierte la variable a un doble flotante así que el máximo es 1.79769313486232e+308, pero en ese caso el número ¡no es exacto! Solo tiene 15 cifras.
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa


Volver a Básico

¿Quién está conectado?

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