Funzione Perl pack
Descrizione
Questa funzione valuta le espressioni in LIST e le impacchetta in una struttura binaria specificata da EXPR. Il formato viene specificato utilizzando i caratteri mostrati nella tabella seguente:
Ogni carattere può essere facoltativamente seguito da un numero, che specifica un conteggio di ripetizioni per il tipo di valore da impacchettare, ovvero stuzzichini, caratteri o persino bit, a seconda del formato. Un valore di * si ripete per tutti i valori rimasti in LIST. I valori possono essere decompressi con la funzione unpack.
Ad esempio, a5 indica che sono previste cinque lettere. b32 indica che sono previsti 32 bit. h8 indica che sono previsti 8 nybbles (o 4 byte). P10 indica che la struttura è lunga 10 byte.
Sintassi
Di seguito è riportata la semplice sintassi per questa funzione:
pack EXPR, LIST
Valore di ritorno
Questa funzione restituisce una versione compressa dei dati in LIST utilizzando TEMPLATE per determinare come è codificato.
Ecco la tabella che fornisce i valori da utilizzare in TEMPLATE.
| Sr.No. | Carattere e descrizione |
|---|---|
| 1 | a Stringa di caratteri ASCII riempita con caratteri nulli |
| 2 | A Stringa di caratteri ASCII riempita con spazi |
| 3 | b Stringa di bit, prima il più basso |
| 4 | B Stringa di bit, prima la più alta |
| 5 | c Un carattere con segno (intervallo solitamente da -128 a 127) |
| 6 | C Un carattere senza segno (solitamente 8 bit) |
| 7 | d Un numero a virgola mobile a precisione doppia |
| 8 | f Un numero a virgola mobile a precisione singola |
| 9 | h Stringa esadecimale, prima la cifra più bassa |
| 10 | H Stringa esadecimale, prima la cifra più alta |
| 11 | i Un numero intero con segno |
| 12 | I Un numero intero senza segno |
| 13 | l Un intero lungo con segno |
| 14 | L Un numero intero lungo senza segno |
| 15 | n Un numero intero breve in ordine di rete |
| 16 | N Un numero intero lungo in ordine di rete |
| 17 | p Un puntatore a una stringa |
| 18 | s Un numero intero breve con segno |
| 19 | S Un numero intero breve senza segno |
| 20 | u Converti in formato uuencode |
| 21 | v Un numero intero corto in ordine VAX (little endian) |
| 22 | V Un numero intero lungo in ordine VAX |
| 23 | x Un byte nullo |
| 24 | X Indica "torna indietro di un byte" |
| 25 | @ Riempi con valori nulli (ASCII 0) |
Esempio
Di seguito è riportato il codice di esempio che mostra il suo utilizzo di 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";
Quando viene eseguito il codice sopra, produce il seguente risultato:
bits are A
bits are
bits are �T
Array 255
Array T
Array 30
