PerlのCGIモジュールでHTMLからのパラメーター渡しを行いたい
PerlのCGIモジュールでHTMLフォームの表示を行おうとしております。
下記の引用部分でどのようにparamを使ったらよいのでしょうか?
質問の意味も通じるのか不安なのですが、ご教示いただけると助かります。よろしくお願い致します。
- Windows 7 Professional SP1 64ビット
- Apache 2.4.29(Win64)
- Perl v5.24.3
- Google Chrome バージョン: 63.0.3239.132(Official Build) (64 ビット)
HTML側
<html>
<head>
<title>Form Sample</title>
</head>
<body>
<h1>Web Page</h1></body>
<form action="/cgi/01input.cgi" method="POST" >
Value 1:<input name="v1" type="text" value=""><br>
Value 2:<input name="v2" type="text" value="">
<input type="submit" value="送信">
</form>
</body>
</html>
Perl側
use strict;
use warnings;
use Data::Dumper;
use CGI;
my $cr = "\n" ;
my %in ;
my $alldata ;
if ($ENV{'REQUEST_METHOD'} eq 'POST')
{ read(STDIN, $alldata, $ENV{'CONTENT_LENGTH'});}
else { $alldata = $ENV{'QUERY_STRING'};}
foreach my $data (split(/&/, $alldata)) {
my ($key, $value) = split(/=/, $data);
$value =~ tr/+//;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1))/eg;
$value =~ s/\t//g;
$in{"$key"} = $value;
}
my $q = new CGI;
print $q->header();
print $q->start_html(-title=>'test');
print $q->start_form(-method=>'POST',-action=>'02input.cgi');
foreach my $key(sort keys(%in)){ print "$key:<input type=text name='$key' value=$in{$key}><br>$cr"; }
print $q->end_form;
print $q->end_html;
exit;
***追加
paramで受け取りたいのですが、下記の引用部分をparamでのCGIモジュールの内容に修正し、localhostで見ると、ブランクページとなってしまいます。
htmlソースで見ると下記のとおりの状態となっています。
<body>
<form method="post" action="02input.cgi" enctype="multipart/form-data">
</form>
</body>