スクリプトをカスタマイズしようとしていますが、Perlを使用してフォームからPOST値を取得する必要があります。Perlのバックグラウンドはありませんが、これはかなり単純なことなので、難しいことではないと思います。 。
これは私がPerlに入れたいコードのphpバージョンです:
<?php
$download = ($_POST['dl']) ? '1' : '0';
?>
これはPerlバージョンとはまったく関係がないかもしれませんが、私が何をしようとしているのかを明確にするのに役立つかもしれません。
その場合は、この単純なコードを見てください。これは次のことに役立ちます。
#!/usr/bin/Perl
use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
sub output_top($);
sub output_end($);
sub display_results($);
sub output_form($);
my $q = new CGI;
print $q->header();
# Output stylesheet, heading etc
output_top($q);
if ($q->param()) {
# Parameters are defined, therefore the form has been submitted
display_results($q);
} else {
# We're here for the first time, display the form
output_form($q);
}
# Output footer and end html
output_end($q);
exit 0;
# Outputs the start html tag, stylesheet and heading
sub output_top($) {
my ($q) = @_;
print $q->start_html(
-title => 'A Questionaire',
-bgcolor => 'white');
}
# Outputs a footer line and end html tags
sub output_end($) {
my ($q) = @_;
print $q->div("My Web Form");
print $q->end_html;
}
# Displays the results of the form
sub display_results($) {
my ($q) = @_;
my $username = $q->param('user_name');
}
# Outputs a web form
sub output_form($) {
my ($q) = @_;
print $q->start_form(
-name => 'main',
-method => 'POST',
);
print $q->start_table;
print $q->Tr(
$q->td('Name:'),
$q->td(
$q->textfield(-name => "user_name", -size => 50)
)
);
print $q->Tr(
$q->td($q->submit(-value => 'Submit')),
$q->td(' ')
);
print $q->end_table;
print $q->end_form;
}
スタイルのアドバイス:変数に0または1を割り当てる必要はほとんどありません。ブール値のコンテキストで値自体を評価するだけです。
CGI.pm(CGI) では、param
メソッドはPOSTとGETパラメーターをマージするため、リクエストメソッドを個別に検査する必要があります。
#!/usr/bin/env Perl
use strict;
use warnings FATAL => 'all';
use CGI qw();
my $c = CGI->new;
print $c->header('text/plain');
if ('POST' eq $c->request_method && $c->param('dl')) {
# yes, parameter exists
} else {
# no
}
print 'Do not taunt happy fun CGI.';
Plack :: Request(PSGI) を使用すると、POST(body_parameters
)およびGET(query_parameters
)混合インターフェース(parameters
)に加えて:
#!/usr/bin/env plackup
use strict;
use warnings FATAL => 'all';
use Plack::Request qw();
my $app = sub {
my ($env) = @_;
my $req = Plack::Request->new($env);
if ($req->body_parameters->get_all('dl')) {
# yes
} else {
# no
}
return [200, [Content_Type => 'text/plain'], ['Do not taunt happy fun Plack.']];
};
開始するのに適した場所は次のとおりです。 CGIスクリプト用のPerlモジュールであるCGI.pmの愚か者ガイド 。
これにより、「...(送信されたフォームから)POST値を取得し、それを変数に割り当てる方法」」が表示されます。
お役に立てれば!
上記の例は少し複雑です。以下のコードは、POST値を変数に読み込みます。そこからキー値を抽出できます。GETの場合は、CGI
モジュールを使用することをお勧めします。
#!/usr/bin/Perl
my $FormData = '';
read(STDIN, $FormData, $ENV{'CONTENT_LENGTH'});
## Variable $FormData holds all POST values passed
use CGI;
my $cgi = new CGI;
print $cgi->header();
print "$FormData";