CGIモジュール

あんまり使わないが、すっきり書けそうなので使ってみる。

charsetを指定しないと iso-xxxxとかになるので、utf-8を指定する。

日本語を使わないなら、 print header() でよい。


#!/usr/bin/perl
use strict;
use warnings;
use CGI qw(:standard);

print header(-charset=>'utf-8'),
start_html(-title=>"Login"),

h2("ログインしてください"),
hr(), start_form(-method=>'post',-action=>'./post.cgi'),
p("ID : ", textfield("id")),
p("password : ", textfield("password")),
submit(-name=>'login',-value=>'ログイン'),
end_form(), hr(), end_html();


ついでに、入力された値を表示するcgi。


#!/usr/bin/perl
use strict;
use warnings;
use CGI qw(:standard);

my $id = param('id');
my $password = param('password');

print header(-charset=>'utf-8'),
start_html(-title=>"Login"),
h2("ようこそ"),
hr(),
p($id),
p($password),
hr(), end_html();


CGIモジュールは使ったことがあったのだが、以下のようにnewして ->でメソッド(?)を呼び出していた。


$obj = new CGI;
print $obj->header;


今回はPerlクックブックなどのサンプルを見たのであるが、そこではnewしないで使っている。

そして、qw(:standard) を書かないとnewしないと使えないことがわかった。

どうしてそうなるのかは、わからない。