]> git.p6c8.net - selfforum.git/blob - selfforum-cgi/shared/Template/_query.pm
8d1d8ecdb093bc04c126b82806dc7c33b87e53e5
[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>, 2001-06-16 #
8 # #
9 # Description: compose a query string #
10 # #
11 ################################################################################
12
13 use strict;
14 use vars qw(
15 @EXPORT
16 $VERSION
17 );
18
19 ################################################################################
20 #
21 # Version check
22 #
23 $VERSION = do { my @r =(q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
24
25 ################################################################################
26 #
27 # Export
28 #
29 use base qw(Exporter);
30 @EXPORT = qw(query_string);
31
32 ### url_encode () ##############################################################
33 #
34 # urlsafe encoding
35 # (more or less from CGI.pm)
36 #
37 # Params: $string - string to encode
38 #
39 # Return: encoded string
40 #
41 sub url_encode ($) {
42 my $string = shift;
43 $string=~s/([^a-zA-Z\d_.-])/uc sprintf('%%%02x',ord($1))/eg;
44
45 $string;
46 }
47
48 ### query_string () ############################################################
49 #
50 # compose a query string
51 #
52 # Params: $parlist - hashref
53 #
54 # Return: scalar: query string
55 #
56 sub query_string ($) {
57 my $parlist=shift;
58
59 my $string = '?'.join ('&amp;' =>
60 map {
61 (ref)
62 ? map{url_encode ($_).'='.url_encode ($parlist -> {$_})} @{$parlist -> {$_}}
63 : url_encode ($_).'='.url_encode ($parlist -> {$_})
64 } keys %$parlist
65 );
66
67 # return
68 $string;
69 }
70
71 # keep 'require' happy
72 1;
73
74 #
75 #
76 ### end of Template::_query ####################################################

patrick-canterino.de