enurl(3)

NAME

CGI::Enurl.pm - module for URL-encoding strings and hashes

version 1.06

SYNOPSIS

use CGI::Enurl;
%hash    =   (name=>'Jenda   Krynicky',address=>'Nerudova
1016');
print      "Location:       http://$ENV{SERVER_NAME}/cgibin/do.pl?",enurl hash,"0;

DESCRIPTION

This is a little module made for CGI scripting. It encodes
the parameters to be passed to a CGI. It does nothing
more, so it's much smaller and loads more quickly.

Functions

enurl STRING
enurl ARRAY
enurl HASH
Encodes the parameter. If the parameter is a single
string it encodes it and returns the encoded form.
If it is an array or a reference to an array it encodes
all items and returns them joined by '&'.
If it is a hash it encodes the values and return a
querystring in form
"key2=encoded_value1&key2=encoded_value2&...".
!!! Please note that a hash in a list context returns a
list of all keys and values. This means that if you call
enurl(%hash) you will NOT get what you may thing you
should. You HAVE to use enurl(hash) !!!
enURL STRING
Encodes the parameter, this version doesn't encode '='
and '&' characters, so you should make sure they are not
present in the data.
Notice the difference :

enurl 'a&b=f o o' => 'a%26b%3Df+o+o'
enURL 'a&b=f o o' => 'a&b=f+o+o'
$Enurl::ParamSeparator
You may specify another character to be used as the
parameter separator. Simply set this variable to the
character (or string) you want to use.
The default value is '&'
$Enurl::KeepUnencoded
This variable contains the characters that should stay
unencoded. Please keep in mind that the string will be
interpolated into a regexp in a [^...] group!
Any change of this variable will be ignored after the
first call to enurl or enURL. (I'm using /o switch in
the regexp.) So if you want to change the variable you
should do it as soon as posible. You may do that even
before you "use" the module!
The default value is 'a-zA-Z 0-9_-@.='
EXAMPLE:

use CGI::Enurl;
print "Location: http://www.some
where.com/Scripts/search.pl?",
enurl('something strange'),"0;
or

use CGI::Enurl;
print "Location: http://www.some
where.com/Scripts/search.pl?",
enurl('something strange','and other',666),"0;
or

use CGI::Enurl;
print "Location: http://www.some
where.com/Scripts/myscript.pl?",
enurl({fname => 'Jan',lname => 'Krynický',tel =>
'+420-2-9618 1234'},1),"0;
or

use CGI::Enurl;
print "Location: http://www.some
where.com/Scripts/myscript.pl?",
enURL('fname=Jan&lname=Krynický&tel=+420-2-9618
1234&1',"0;
or using the tricks of Interpolation.pm http://www.plover.com/~mjd/perl/Interpolation/manual.html

use CGI::Enurl;
use Interpolation URL => enurl;
print "name=$URL{'Jann Linder, jr'}&address=$URL{'129
kjhlkjd st'}";
or even

use CGI::Enurl;
use Interpolation enurl => sub {my %hash=split
/$;/o,$_[0];enurl hash};
# use other name instead of enurl if you like.
print "script.pl?$enurl{name=>'Jenda Krynicky',ad
dress=>'Nerudova 1016'}0;
%hash = (name=>'Jenda Krynicky',address=>'Nerudova
1016');
sub var {
if (ref $_[0] eq 'HASH') {
join $;, %{shift()}, @_;
} else {
join $;, @_;
}
}
print "script.pl?$enurl{var %hash}0;
# the "var" is necessary !
# without it you will get : "Odd number of elements
in hash list at ... line 2."
print "script.pl?$enurl{var %hash,age=>22}0;

# you may omit the "var" only if you enter the hash
as a constant directly
# into $enurl{...}.
If you want to be cheeky you may use '$?{}' as the inter
polator:

use CGI::Enurl;
use Interpolation '?' => sub {my %hash=split /$;/o,$_[0];
'?' . enurl hash};
print "cript.pl$?{a=>5,b=>7,n=>'Jenda Krynicky'}0;
or

use CGI::Enurl;
use Interpolation '?' => sub {'?' . enURL $_[0]};
print "cript.pl$?{'a=5&b=7&n=Jenda Krynicky'}0;
# # or
# print qq{cript.pl$?{"a=5&b=7&n=$name"}0;
Please read the docs for enurl versus enURL so that you
understand the difference!
DISCLAIMER
The enurl_str function is taken from CGI.pm. (It's named
'escape' there.) Thanks.
AUTHOR
Jan Krynicky <Jenda@Krynicky.cz>
COPYRIGHT
Copyright (c) 1997 Jan Krynicky <Jenda@Krynicky.cz>. All
rights reserved. This program is free software; you can
redistribute it and/or modify it under the same terms as
Perl itself.
Copyright © 2010-2025 Platon Technologies, s.r.o.           Index | Man stránky | tLDP | Dokumenty | Utilitky | O projekte
Design by styleshout