X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fperl%2FCGI.pm;h=aeb6c50504a52a4c8bdda50fa4e11cd1d087ebd5;hb=c673da72822d7704572716de80402829921efdc3;hp=462b0c43242ef41a7b1b3647c8605e249f5c05c1;hpb=9f87c6fe6552ce8b2236a07307d2f825b0e4c439;p=libucw.git diff --git a/lib/perl/CGI.pm b/lib/perl/CGI.pm index 462b0c43..aeb6c505 100644 --- a/lib/perl/CGI.pm +++ b/lib/perl/CGI.pm @@ -1,6 +1,7 @@ # Poor Man's CGI Module for Perl # # (c) 2002 Martin Mares +# Slightly modified by Tomas Valla # # This software may be freely distributed and used according to the terms # of the GNU Lesser General Public License. @@ -23,8 +24,7 @@ BEGIN { sub url_escape($) { my $x = shift @_; - $x =~ s/([^-\$_.!*'(),0-9A-Za-z\x80-\xff ])/"%".unpack('H2',$1)/ge; - $x =~ s/ /+/g; + $x =~ s/([^-\$_.!*'(),0-9A-Za-z\x80-\xff])/"%".unpack('H2',$1)/ge; return $x; } @@ -54,15 +54,26 @@ sub parse_arg_string($) { if (my $rx = $arg->{'check'}) { if (!/^$rx$/) { $_ = $arg->{'default'}; } } - ${$arg->{'var'}} = $_; + + my $r = ref($arg->{'var'}); + if ($r eq 'SCALAR') { + ${$arg->{'var'}} = $_; + } elsif ($r eq 'ARRAY') { + push @{$arg->{'var'}}, $_; + } } } sub parse_args($) { $arg_table = shift @_; foreach my $a (values %$arg_table) { + my $r = ref($a->{'var'}); defined($a->{'default'}) or $a->{'default'}=""; - ${$a->{'var'}} = $a->{'default'}; + if ($r eq 'SCALAR') { + ${$a->{'var'}} = $a->{'default'}; + } elsif ($r eq 'ARRAY') { + @{$a->{'var'}} = (); + } } defined $ENV{"GATEWAY_INTERFACE"} or die "Not called as a CGI script"; my $method = $ENV{"REQUEST_METHOD"};