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