[Edit][Create New]
[ IndexPage / ネットとプログラミング / CGI / 便利なスクリプト片(未整理) / get_param.pl ]

get_param.pl

use Jcode;

sub get_param{
	my($query,$key,$data,%param);

	if    ($ENV{'REQUEST_METHOD'} eq 'POST'){
		&error('文章が長すぎます') if ($ENV{'CONTENT_LENGTH'} > 30_000);
		read(STDIN, $query, $ENV{CONTENT_LENGTH});
	}elsif($ENV{'REQUEST_METHOD'} eq 'GET'){
		$query = $ENV{'QUERY_STRING'};
	}else{
		print "Terminal mode..\n";
		print "You can type 1-lined Query-String or just [ENTER].\n";
		chop($query = <>);
	}

	foreach(split('&',$query)){
		($key,$data) = split('=',$_);
		$data =~ s/\+/ /g;
		$data =~ s/%([\da-f][\da-f])/pack("C",hex($1))/egi;

		# ナルストリングを除く
		$data =~ tr/\0//d;

		Jcode::convert(\$data,'euc');
		$param{$key} = $data;
	}
	%param;
}

1;