http://www.perlmonks.org?node_id=118067


in reply to CGI-encoded quote characters

As you may already use CGI; you can do it with (updated, thanks to echo):

my $escaped_url = $url . CGI::escape($query_string);

alex pleiner <alex@zeitform.de>
zeitform Internet Dienste

Replies are listed 'Best First'.
Re: Re: CGI-encoded quote characters
by echo (Pilgrim) on Oct 10, 2001 at 21:41 UTC
    Be careful not to escape the whole URL though, you want to leave those slashes intact. Only the query string itself should be escaped.
Re: Re: CGI-encoded quote characters
by cfreak (Chaplain) on Oct 10, 2001 at 22:55 UTC

    If you are already parsing the parameters with CGI it does it automatically.

    I tend to do $cgi->Vars() which returns a hash of all parameters to the script. It returns the parameters of the query string if it is a GET or the form if it is a POST. I wrote a little test script:

    #!/usr/bin/perl use CGI; my $cgi = new CGI; my %form = $cgi->Vars(); print "Content-type:text/html\n\n"; print "<html><body>\n"; foreach my $key(keys %form) { print "$key = $form{$key}<br>\n"; } print "</body></html>\n"; exit;

    I fed it this url:
    urltest.cgi?param=%22something%22¶m2=something_else

    It printed "something" something_else. The point is that CGI will handle this automatically.

      If you reread the question, you will see, that Anonymous Monk asked for tips to ENCODE the query string...

      alex pleiner <alex@zeitform.de>
      zeitform Internet Dienste

        Doh!! I thought he wanted to decode it, oh well disregard my above post! :)