PDA

Visualizza la versione completa : [ PERL ] funzione pack


C232
19-03-2005, 16:30
ragazzi a cosa serve la funzione pack? Ho visto che viene utilizzate nelle sostituzioni, esempio:

[code] s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; [code]

ma viene usata solo nelle sostituzioni???

LordSaga640
20-03-2005, 17:52
pack serve per trafromare un numero in una seq di byte.

Ad esempio, hai il numero 1234 e lo vuoi cinvertire in formato 2byte con segno. Basta che fai:
pack("s",1234) e la funziona pack di torna i due byte.

GUIDA IN ITALIANO A PACK:
http://www.perl.it/documenti/perlfunc/view.html?func=pack


unpack invece fa il contrario.
print unpack("I",pack("I",854651))."\n";
#stampa '854651'

La sostituzione che hai fatto te invece si usa negli url.
I caratteri speciali negli url sono convertiti in esadecimale e davanti hanno il '%'.
pack("C", hex($1))
hex converte il numero esadecimale in decimale.
pack trasforma il numero in un carattere.
Nel tuo caso però si poteva sostituire la funzione pack con chr.
s/%([a-fA-F0-9][a-fA-F0-9])/chr(hex($1))/eg;
Che è molto più bello XD
se non hai capito risp.
ciao

Loading