use MIME::Base64; sub Crush { return shift(@_).MIME::Base64::encode (join ("\x00", @_), ""); } sub Uncrush { my ($q) = shift; return split (/\x00/, MIME::Base64::decode($q->path_info())); } #### my (%data) = ( 'x' => 'y' ); # etc. $url = Crush ("http://www.xyzco.com/foo.cgi?",%data); # Or, on the receiving end... my ($q) = new CGI; my (%data) = Uncrush ($q);