package CGI::QueryString; # $Id: QueryString.pm,v 1.3 1999/11/23 15:56:25 tom Exp $ ################################################################ =head1 NAME CGI::QueryString - クエリーの処理 =cut use strict; use Exporter; use vars qw(@ISA @EXPORT $QueryString %Parameter); @ISA = qw(Exporter); @EXPORT = qw(query_string param); BEGIN{ my $method = $ENV{'REQUEST_METHOD'}; if ($method =~ /^(GET|HEAD)$/){ $QueryString = $ENV{'QUERY_STRING'}; } elsif ($method eq 'POST'){ read(STDIN, $QueryString, $ENV{'CONTENT_LENGTH'}); } else { # command line $QueryString = join('&', @ARGV); } for (split("&", $QueryString)){ my ($key, $value) = split("="); if (defined $value){ $Parameter{$key} = $value; # print "$key, $value : $Parameter{$key} "; } else { $Parameter{keywords} = $key; } } } ################################################################ =head2 query_string; クエリーをそのまま返す =cut sub query_string() { return $QueryString; } =head2 param($name); パラメータ $name の値を返す =cut sub param($) { my $key = shift; # print "param($key):$Parameter{$key}"; my $value = $Parameter{$key}; $value =~ tr/+/ /; # pluses become spaces $value =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge; return $value; } 1;