Fonction du pack Perl

La description

Cette fonction évalue les expressions dans LIST et les emballe dans une structure binaire spécifiée par EXPR. Le format est spécifié à l'aide des caractères indiqués dans le tableau ci-dessous -

Chaque caractère peut être éventuellement suivi d'un nombre, qui spécifie un nombre de répétitions pour le type de valeur à emballer, c'est-à-dire des grignotages, des caractères ou même des bits, selon le format. Une valeur de * se répète pour autant de valeurs restant dans la LISTE. Les valeurs peuvent être décompressées avec la fonction de décompression.

Par exemple, a5 indique que cinq lettres sont attendues. b32 indique que 32 bits sont attendus. h8 indique que 8 nybbles (ou 4 octets) sont attendus. P10 indique que la structure a une longueur de 10 octets.

Syntaxe

Voici la syntaxe simple de cette fonction -

pack EXPR, LIST

Valeur de retour

  • Cette fonction renvoie une version compressée des données dans LIST à l'aide de TEMPLATE pour déterminer comment elles sont codées.

Voici le tableau qui donne les valeurs à utiliser dans TEMPLATE.

N ° Sr. Caractère et description
1

a

Chaîne de caractères ASCII remplie de caractères nuls

2

A

Chaîne de caractères ASCII remplie d'espaces

3

b

Chaîne de bits, la plus basse en premier

4

B

Chaîne de bits, la plus élevée en premier

5

c

Un caractère signé (généralement compris entre -128 et 127)

6

C

Un caractère non signé (généralement 8 bits)

sept

d

Un nombre à virgule flottante double précision

8

f

Un nombre à virgule flottante simple précision

9

h

Chaîne hexadécimale, le plus petit chiffre en premier

dix

H

Chaîne hexadécimale, le chiffre le plus élevé en premier

11

i

Un entier signé

12

I

Un entier non signé

13

l

Un entier long signé

14

L

Un entier long non signé

15

n

Un entier court dans l'ordre du réseau

16

N

Un long entier dans l'ordre du réseau

17

p

Un pointeur vers une chaîne

18

s

Un entier court signé

19

S

Un entier court non signé

20

u

Convertir au format uuencode

21

v

Un entier court dans l'ordre VAX (petit boutiste)

22

V

Un entier long dans l'ordre VAX

23

x

Un octet nul

24

X

Indique "reculer d'un octet"

25

@

Remplir avec des valeurs nulles (ASCII 0)

Exemple

Voici l'exemple de code montrant son utilisation de base -

#!/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";

Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -

bits are A
bits are 
bits are �T
Array 255
Array T
Array 30