Perl/php風データ取得スクリプト
提供: 初心者エンジニアの簡易メモ
#!/usr/bin/perl
# php風データ取得スクリプト
# require './indata.cgi';
print "content-type: text/html\n\n";
require './jcode.pl';
&jcode'convert( *value, 'sjis' );
# POST用
if ($ENV{'REQUEST_METHOD'} eq "POST") {
my $_POST_STR;
read( STDIN, $_POST_STR, $ENV{'CONTENT_LENGTH'} );
$_POST_STR =~ tr/+/ /;
$_POST_STR =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1) )/ge;
%_POST = ¶m_to_hash($_POST_STR);
}
# GET用
if ($ENV{'QUERY_STRING'}) {
my $_GET_STR = $ENV{'QUERY_STRING'};
$_GET_STR =~ tr/+/ /;
$_GET_STR =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1) )/ge;
%_GET = ¶m_to_hash($_GET_STR);
}
# REQUEST用
%_REQUEST = %_GET;
foreach (keys %_POST) {
$_REQUEST{$_} = $_POST{$_};
}
# パラメータ文字列からハッシュへ
sub param_to_hash {
my ($str) = @_;
my %hash;
my (@arr) = split(/&/, $str);
foreach (@arr) {
my ($key, @value) = split(/=/, $_);
if ($#value >= 1) {
$hash{$key} = join("=", @value);
} else {
$hash{$key} = $value[0];
}
}
return %hash;
}
1;
