Pack y Unpack

El operador pack trabaja de forma parecida a sprintf. Su primer argumento es una cadena, seguida de una lista de valores a formatear y devuelve una cadena:
pack("CCC", 65, 66, 67, 68) # empaquetamos A B C D
el inverso es el operador unpack
unpack("CCC", "ABCD")
La cadena de formato es una lista de especificadores que indican el tipo del dato que se va a empaquetar/desempaquetar. Cada especificador puede opcionalmente seguirse de un contador de repetición que indica el número de elementos a formatear. Si se pone un asterisco (*) se indica que la especificación se aplica a todos los elementos restantes de la lista.

Formato Descripción  
A Una cadena completada con blancos  
a Una cadena completada con ceros  
B Una cadena binaria en orden descendente  
b Una cadena binaria en orden ascendente  
H Una cadena hexadecimal, los nibble altos primero  
h Una cadena hexadecimal, los nibble bajos primero  

Ejemplo de uso del formato A:

DB<1> $a = pack "A2A3", "Pea","rl"
DB<2> p $a
Perl
DB<3> @b = unpack "A2A3", "Perl"
DB<4> p "@b"
Pe rl
La variable @b tiene ahora dos cadenas. Una es Pe la otra es rl. Veamos un ejemplo con el formato B:
p ord('A')
65
DB<22> $x = pack "B8", "01000001"
DB<23> p $x
A
DB<24> @y = unpack "B8", "A"
DB<25> p "@y"
01000001
DB<26> $x = pack "b8", "10000010"
DB<27> p $x

Casiano Rodríguez León
2009-12-09