X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fperl%2FCGI.pm;h=aeb6c50504a52a4c8bdda50fa4e11cd1d087ebd5;hb=3f852dbf02d4a71de5470885e57b11726ad5ac77;hp=cf790880961773696dc381a225e7fb19070f61fb;hpb=6e025f09f33f8d01a7c9c0b645a39d29fc1b28e0;p=libucw.git diff --git a/lib/perl/CGI.pm b/lib/perl/CGI.pm index cf790880..aeb6c505 100644 --- a/lib/perl/CGI.pm +++ b/lib/perl/CGI.pm @@ -55,10 +55,11 @@ sub parse_arg_string($) { if (!/^$rx$/) { $_ = $arg->{'default'}; } } - if (defined $arg->{'array'}) { - push @{$arg->{'array'}}, $_; - } else { + my $r = ref($arg->{'var'}); + if ($r eq 'SCALAR') { ${$arg->{'var'}} = $_; + } elsif ($r eq 'ARRAY') { + push @{$arg->{'var'}}, $_; } } } @@ -66,10 +67,13 @@ sub parse_arg_string($) { sub parse_args($) { $arg_table = shift @_; foreach my $a (values %$arg_table) { + my $r = ref($a->{'var'}); defined($a->{'default'}) or $a->{'default'}=""; - die "Should define either 'var' or 'array'" if defined($a->{'var'})+defined($a->{'array'})!=1; - defined $a->{'var'} and ${$a->{'var'}} = $a->{'default'}; - defined $a->{'array'} and @{$a->{'array'}} = (); + 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"};