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