]> git.p6c8.net - selfforum.git/blob - selfforum-cgi/shared/Template/_query.pm
CGI::Carp does not block eval errors all the time (bug?)
[selfforum.git] / selfforum-cgi / shared / Template / _query.pm
1 package Template::_query;
2
3 ################################################################################
4 # #
5 # File: shared/Template/_query.pm #
6 # #
7 # Authors: André Malo <nd@o3media.de> #
8 # #
9 # Description: compose a query string #
10 # #
11 ################################################################################
12
13 use strict;
14 use vars qw(
15 @EXPORT
16 );
17
18 ################################################################################
19 #
20 # Version check
21 #
22 # last modified:
23 # $Date$ (GMT)
24 # by $Author$
25 #
26 sub VERSION {(q$Revision$ =~ /([\d.]+)\s*$/)[0] or '0.0'}
27
28 ################################################################################
29 #
30 # Export
31 #
32 use base qw(Exporter);
33 @EXPORT = qw(query_string);
34
35 ### url_encode () ##############################################################
36 #
37 # urlsafe encoding
38 # (more or less from CGI.pm)
39 #
40 # Params: $string - string to encode
41 #
42 # Return: encoded string
43 #
44 sub url_encode ($) {
45 my $string = shift;
46 $string=~s/([^a-zA-Z\d_.-])/uc sprintf('%%%02x' => ord($1))/eg;
47
48 $string;
49 }
50
51 ### query_string () ############################################################
52 #
53 # compose a query string
54 #
55 # Params: $parlist - hashref
56 #
57 # Return: scalar: query string
58 #
59 sub query_string ($) {
60 my $parlist=shift;
61
62 my $string = '?'.join ('&amp;' =>
63 map {
64 (ref)
65 ? map{url_encode ($_).'='.url_encode ($parlist -> {$_})} @{$parlist -> {$_}}
66 : url_encode ($_).'='.url_encode ($parlist -> {$_})
67 } keys %$parlist
68 );
69
70 # return
71 $string;
72 }
73
74 # keep 'require' happy
75 1;
76
77 #
78 #
79 ### end of Template::_query ####################################################

patrick-canterino.de