Función del paquete de Perl
Descripción
Esta función evalúa las expresiones en LIST y las empaqueta en una estructura binaria especificada por EXPR. El formato se especifica utilizando los caracteres que se muestran en la tabla siguiente:
Cada carácter puede ir seguido opcionalmente por un número, que especifica un recuento de repeticiones para el tipo de valor que se está empaquetando, es decir, nibbles, caracteres o incluso bits, según el formato. Un valor de * se repite mientras queden tantos valores en LISTA. Los valores se pueden descomprimir con la función de desempaquetar.
Por ejemplo, a5 indica que se esperan cinco letras. b32 indica que se esperan 32 bits. h8 indica que se esperan 8 nybbles (o 4 bytes). P10 indica que la estructura tiene 10 bytes de longitud.
Sintaxis
A continuación se muestra la sintaxis simple para esta función:
pack EXPR, LIST
Valor devuelto
Esta función devuelve una versión empaquetada de los datos en LIST usando TEMPLATE para determinar cómo se codifica.
Aquí está la tabla que da los valores que se utilizarán en PLANTILLA.
No Señor. | Descripción del personaje |
---|---|
1 | a Cadena de caracteres ASCII rellenada con caracteres nulos |
2 | A Cadena de caracteres ASCII rellenada con espacios |
3 | b Cadena de bits, el más bajo primero |
4 | B Cadena de bits, el más alto primero |
5 | c Un carácter con signo (rango generalmente de -128 a 127) |
6 | C Un carácter sin signo (generalmente 8 bits) |
7 | d Un número de coma flotante de doble precisión |
8 | f Un número de punto flotante de precisión simple |
9 | h Cadena hexadecimal, el dígito más bajo primero |
10 | H Cadena hexadecimal, el dígito más alto primero |
11 | i Un entero con signo |
12 | I Un entero sin signo |
13 | l Un entero largo con signo |
14 | L Un entero largo sin signo |
15 | n Un número entero corto en orden de red |
dieciséis | N Un entero largo en orden de red |
17 | p Un puntero a una cuerda |
18 | s Un entero corto con signo |
19 | S Un entero corto sin signo |
20 | u Convertir a formato uuencode |
21 | v Un entero corto en orden VAX (little-endian) |
22 | V Un entero largo en orden VAX |
23 | x Un byte nulo |
24 | X Indica "retroceder un byte" |
25 | @ Rellenar con nulos (ASCII 0) |
Ejemplo
A continuación se muestra el código de ejemplo que muestra su uso básico:
#!/usr/bin/perl -w
$bits = pack("c", 65);
# prints A, which is ASCII 65.
print "bits are $bits\n";
$bits = pack( "x" );
# $bits is now a null chracter.
print "bits are $bits\n";
$bits = pack( "sai", 255, "T", 30 );
# creates a seven charcter string on most computers'
print "bits are $bits\n";
@array = unpack( "sai", "$bits" );
#Array now contains three elements: 255, T and 30.
print "Array $array[0]\n";
print "Array $array[1]\n";
print "Array $array[2]\n";
Cuando se ejecuta el código anterior, produce el siguiente resultado:
bits are A
bits are
bits are �T
Array 255
Array T
Array 30