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しないと使えないことがわかった。
どうしてそうなるのかは、わからない。