書き直してみるシリーズ第2弾。
今回は、CGI.pmをfunctionスタイルではなく、OOP風に使ってみる。
以前は細かい処理も自分で書いていたが、使えるモジュールは使う方向で。
また、サブルーチンにもしてみた。
Encodeが標準装備となったPerl5.8以降は、文字コード関係の考え方ががらっと変わっている。
で、リメイクするにあたってPerl5.8風の書き方と、utf8を使っていこうと思ったのだが、とりあえず、今回はeuc-jpということで濁しておく。
前回はutf8で出力していたが、文字コードがutf8で書いた状態を想定しているだけで、新しい考え方で実行しているわけではない。
PerlEditorはutf8を扱えないので、挑戦するとしたらeuc-jpで書いたスクリプトをPerl5.8らしく動作させる、という方向になるだろう。
今、参考に見ているサイトをいくつか挙げておく。
・Perl 5.8.x における日本語コード変換のメモ
・Perl 5.8.x Unicode関連
ソースコード
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use FileHandle;
{
my $cgi = CGI->new;
my $styles = ["../../ipp.css"];
&print_header($cgi, "テスト2", $styles);
print $cgi->p("「sig.txt」を読み込みます。");
print $cgi->start_div;
my $fh = FileHandle->new("../../sig.txt") or die;
print $fh->getlines;
undef $fh;
print $cgi->end_div;
&print_footer($cgi);
}
exit;
# ヘッダ
sub print_header {
my ($cgi, $title, $styles) = @_;
print $cgi->header({ -charset => "euc-jp" });
print $cgi->start_html({
-lang => 'ja',
-title => $title,
-style => { src => $styles },
});
print $cgi->h1($title);
}
# フッタ
sub print_footer {
my ($cgi) = @_;
print $cgi->hr;
print $cgi->div(
$cgi->a({ href => "../../../" }, "Home"),
"/",
$cgi->a({ href => "../../" }, "Perl"),
"/",
$cgi->a({ href => "../" }, "TestCGI Index"),
);
print $cgi->hr;
print $cgi->address(
$cgi->a({ href => q{mailto:nobu3@x.age.ne.jp}}, "Written by Nobu3"),
);
print $cgi->end_html;
}
