<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">package Template::_query;

################################################################################
#                                                                              #
# File:        shared/Template/_query.pm                                       #
#                                                                              #
# Authors:     André Malo &lt;nd@o3media.de&gt;, 2001-06-16                          #
#                                                                              #
# Description: compose a query string                                          #
#                                                                              #
################################################################################

use strict;
use vars qw(
  @EXPORT
  $VERSION
);

################################################################################
#
# Version check
#
$VERSION = do { my @r =(q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };

################################################################################
#
# Export
#
use base qw(Exporter);
@EXPORT = qw(query_string);

### url_encode () ##############################################################
#
# urlsafe encoding
# (more or less from CGI.pm)
#
# Params: $string - string to encode
#
# Return: encoded string
#
sub url_encode ($) {
  my $string = shift;
  $string=~s/([^a-zA-Z\d_.-])/uc sprintf('%%%02x',ord($1))/eg;

  $string;
}

### query_string () ############################################################
#
# compose a query string
#
# Params: $parlist - hashref
#
# Return: scalar: query string
#
sub query_string ($) {
  my $parlist=shift;

  my $string = '?'.join ('&amp;amp;' =&gt;
    map {
      (ref)
      ? map{url_encode ($_).'='.url_encode ($parlist -&gt; {$_})} @{$parlist -&gt; {$_}}
      : url_encode ($_).'='.url_encode ($parlist -&gt; {$_})
    } keys %$parlist
  );

  # return
  $string;
}

# keep 'require' happy
1;

#
#
### end of Template::_query ####################################################
</pre></body></html>