• Publicidad

Variables: tamaño de entero

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

Variables: tamaño de entero

Notapor dbfs_perl » 2012-05-23 05:36 @275

Buenas a todos.

Antes de nada, felicitaros por el foro.

Tengo una duda referente a la gestión de Perl del tamaño de memoria de las variables.

Por ejemplo,

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use integer;
  3. {
  4.     $t          = 255;
  5.     $byte_size1 = length($t);
  6.     print "Entero:$t\n";
  7. }
  8. $char = "prueba";
  9. $size = length($char);
  10. print "char:$char\n";
  11. use bytes;
  12. $byte_size  = length($char);
  13. $byte_size1 = length($t);
  14. print "size_bytes_entero:$byte_size1\n";
  15. print "size_bytes_char:$byte_size\n";
  16.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


¿Por qué una variable del tipo integer ocupa 3 bytes cuando debería ocupar un solo byte ($t = 255)? ¿Cómo puedo definir esta variable?

No puedo realizar pack/unpack.

Gracias.
Un saludo.
dbfs_perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2012-05-23 03:49 @201

Publicidad

Re: Variables: tamaño de entero

Notapor explorer » 2012-05-23 06:47 @324

Bienvenido a los foros de Perl en Español, dbfs_perl.

¡Je, je! En muchas ocasiones, las cosas no son lo que parecen.

length($t) devuelve 3 porque '255' tiene tres dígitos ;)

Lo que ha hecho length() es transformar el número entero en un cadena, y de ahí viene lo del 3.

Advertencia: se recomienda usar 'use integer;' solo en determinados casos y ámbitos (los encerrados entre '{...}') porque a veces provocan problemas, como se comenta al final de perldoc integer.

El 'use bytes;' lo que hace es cambiar el modo de entender lo que hay dentro de las cadenas de caracteres: de ser 'caracteres' pasan a ser flujos de bytes.

Si quieres guardar un verdadero entero 255 en un solo byte, debes usar la función chr().

Ejecuta en tu ordenador perldoc bytes, y verás un ejemplo que demuestra cómo usarlo y cómo length() devuelve la longitud correcta.

En cuanto a pack/unpack, no muestras el código que te falla.
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: Variables: tamaño de entero

Notapor dbfs_perl » 2012-05-29 05:21 @264

Muchas gracias, me sirvió de mucho. perldoc es una maravilla.
Enhorabuena por el foro.
dbfs_perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2012-05-23 03:49 @201


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 20 invitados