CGI::start_form

CGI::start_formでformの開始タグまで用意する。

https://pointoht.ti-da.net/e6730590.html

action.cgiで、

と書く。
start_formは指定が無い場合は、"POST"で自分自身へのリクエストになる。
perlコマンドでHTML出力を確認すると、

$ perl action.cgi
Content-Type: text/html; charset=ISO-8859-1

<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
<title>CGI::start_form</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form method="post" action="http://localhost" enctype="multipart/form-data">
<input name="key1" value="value1">
<input name="key2" value="value2">
<input type="submit" value="submit">
</form>
</body>
</html>$

ということで、デフォルトは、

<form method="post" action="http://localhost" enctype="multipart/form-data">

こうなってる。
paramのキーの数が0なら、初回表示と判断し、フォームを表示。
そうでなければ、リクエストを投げた後と判定して、パラメータのキーと値を出力。
ちなみにparamはPOSTのパラメータでも取得できる。

これでsubmitすると
これでsubmitすると

これでsubmitすると、

こうなる
こうなる

こうなる。

Sample/perl/CGI/start_form/src/CGI at master · bg1bgst333/Sample · GitHub

CGI::param(name)

CGI::paramに引数としてクエリパラメータのキーを渡すと、それをキーとするクエリパラメータの値が取得できる。

CGI - Common Gateway Interface のリクエストとレスポンスを扱う - perldoc.jp

form.htmlで、

として、
action.cgiで、

とすると、

submitで
submitで

submitで、

キーと値のペアを表示
キーと値のペアを表示

キーと値のペアを表示。

Sample/perl/CGI/param_name/src/CGI at master · bg1bgst333/Sample · GitHub

%ENV(QUERY_STRING)

%ENVで環境変数が取得できるのだから、'QUERY_STRING'を指定すればクエリ文字列を取得できる。

入力フォーム編(GETとPOSTデータを受け取るには) - futomi's CGI Cafe

form.htmlが、

こうで、
ENV.cgiが、

こうなら、

これでsubmitすると、
これでsubmitすると、

これでsubmitすると、

クエリ文字列が取れる
クエリ文字列が取れる

クエリ文字列が取れる。

Sample/perl/ENV/ENV_QUERY_STRING/src/ENV at master · bg1bgst333/Sample · GitHub

%ENV

環境変数はハッシュ%ENVに入っている。

環境変数を取得・設定する %ENV - Perlゼミ - Perl元気塾のPerl講座
環境変数 - futomi's CGI Cafe

ENV.plで、

PATHを出力してみる。

$ perl ENV.pl
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/bg1/.local/bin:/home/bg1/bin
$

と出る。

Sample/perl/ENV/ENV/src/ENV at master · bg1bgst333/Sample · GitHub

CGI::param

key=value形式の場合、CGI::paramを使って、キーと値を取り出す。

CGI - Common Gateway Interface のリクエストとレスポンスを扱う - perldoc.jp
CGI.pm を使ってみよう - futomi's CGI Cafe

引数が無い場合は、キーの配列を返す。
form.htmlで、

として、
action.cgiは、

として

これをsubmit
これをsubmit

これをsubmit。

キー一覧を表示
キー一覧を表示

キー一覧を表示。

Sample/perl/CGI/param/src/CGI at master · bg1bgst333/Sample · GitHub

@ARGV(CGI)

C言語のargvでクエリパラメータを取得できたなら、当然Perlの@ARGVでもクエリパラメータを取得できる。

パラメータ

ARGV.cgiで、

とすると、

f:id:BG1:20210809150618p:plain
'+'で繋ぐ方式なら取得できる

'+'で繋ぐ方式なら取得できる。

key1=value1形式はダメ
key1=value1形式はダメ

key1=value1形式はダメ。

Sample/perl/ARGV/ARGV_CGI/src/ARGV at master · bg1bgst333/Sample · GitHub

argv

argcでパラメータの数が取得できるということは、argvで各々のパラメータも取れる。

パラメータ

action.cで、

こうすると、

&#x27;+&#x27;で繋いだ場合は
'+'で繋いだ場合は

'+'で繋いだ場合は、

各々のパラメータが取得できる
各々のパラメータが取得できる

各々のパラメータが取得できる。
一番最初の要素は、CGIまでのパスになるのね。

Sample/cgi/argv/argv/src/argv at master · bg1bgst333/Sample · GitHub