ファイルから読み込む

ファイルから読み込む (のぶろぐ)

書き直してみるシリーズ第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関連

ソースコード

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/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;
}
comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。