--- Connie Chan <[EMAIL PROTECTED]> wrote: > Since we know this : $string =~ s/([a-fA-F0-9][a-fA-F0-9])/pack ("C", hex($1))/eg; > > is a statement which can converting back the "real string" from > a form field, but, could anybody tell how to convert the "real string" > to the "long long" string ?? > > Besides, anybody can tell what is the exactly meaning of : ("C", hex($1)) ?
Connie, Here's the scoop: pack ("C", hex($1)) Working from the inside, out, 'hex' is a function that takes hex input and returns the integer value: $ perl -e 'print hex "f"' 15 The $1 has the hex data captured from the regular expression. From 'perldoc -f pack', we see that if the first argument to pack is an upper case C, it will convert the second argument to an unsigned character (ASCII). $ perl -e '@a=qw/4f 76 69 64/;print pack("C",hex$_)for @a' Ovid To get from an ASCII character back to the hex encoded version, use URI::Escape. C:\WINDOWS>perl -MURI::Escape -e "print uri_escape(q|Ovid|)" Ovid You might wonder why that printed "Ovid" instead of a bunch of funky hex characters. In URIs, only certain characters need to be escaped. Ampersands, semi-colons, spaces, and a few other items need escaping. See 'perldoc URI::Escape' for more information. C:\WINDOWS>perl -MURI::Escape -e "print uri_escape(q|& ;+|)" %26%20%3B%2B For a full list of what characters are escaped in URIs, see http://www.easystreet.com/~ovid/cgi_course/appendices/appendix2.html. There's also a Perl program at the bottom of the page which shows the use of the URI::Escape module in much greater detail. Cheers, Curtis "Ovid" Poe ===== "Ovid" on http://www.perlmonks.org/ Someone asked me how to count to 10 in Perl: push@A,$_ for reverse q.e...q.n.;for(@A){$_=unpack(q|c|,$_);@a=split//; shift@a;shift@a if $a[$[]eq$[;$_=join q||,@a};print $_,$/for reverse @A __________________________________________________ Do You Yahoo!? Check out Yahoo! Shopping and Yahoo! Auctions for all of your unique holiday gifts! Buy at http://shopping.yahoo.com or bid at http://auctions.yahoo.com -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]