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