ファイルから読み込む

そりゃ、includeと同じ事くらいはCGIでもやってみないとね・・・。

「open(IN,“ファイル名”)」だけど、ファイル名にはサーバーのルートからの指定は無視されるのかな?「/sig.txt」とやると何も表示されなかった・・・。

と思っていたけど、思いっきり勘違いをしていた。CGIを実行するときは、サーバー自身のディレクトリの参照が必要なのだった。だから、ホストのルートではなく、ルートディレクトリを参照していたみたい。ディレクトリの指定も気をつけないと、変なところにファイルを作りかねない・・・。

実は、「テスト1」(便宜上こう呼ぶ)の方だけど、titleタグの方の変数が訂正してなかった。よく考えてみると、タイトルバーにはURLが表示されていたような気がする。サブルーチンでの引数の扱い方も気をつけよう。

ちなみに、エディタは「Perl Editor」を使っている。プログラミング用のエディタみたいで、サブルーチンや変数の一覧が表示されて、使用されている場所へジャンプする事もできる。エディタとしては少し能力不足だけど、他の人が作ったプログラムを見るのにはとても便利だ。ホイールも認識するのが気に入ってる。意外といいエディタだと思っても、ホイールに対応してないのが多いから、この手のソフトはバージョンアップに期待したい。作者のページは「川千原千」です。

・・・時は過ぎ・・・

「Perl Editor」も結構便利になってきた。漢字コードや改行の種類を気にしないで編集できるのが特にいい感じ。

ソースコード

 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
#!/usr/bin/perl

@styles=("../../ipp.css","../test.css");

{
    &printHeader("テスト2");

    print "「sig.txt」を読み込みます。n";
    print "<div class=test>";
    open(IN,"../../sig.txt");
    @sig1=<IN>;
    foreach $line(@sig1){
        print $line;
    }
    close(IN);
    print "</div>";

    &amp;printFooter;

    exit;
}

sub printHeader{
    print "Content-type: text/htmlnn";
    print "<html lang=ja><head><title>$_[0]</title>n";
    foreach $st (@styles){
        print "<link rel="stylesheet" type="text/css" href="$st">n";
    }
    print "</head><body>n";
    print "<div class=head>n";
    print "<h1>$_[0]</h1><hr>n";
    print "<a href="../../../index.htm">Home</a> / <a href="../../">Perl</a> / <a href="../">TestCGI Index</a>n";
    print "<hr></div>n";
}

sub printFooter{
    print "<div class=foot>n";
    print "<hr>n";
    print "<a href="../../../index.htm">Home</a> / <a href="../../">Perl</a> / <a href="../">TestCGI Index</a>n";
    print "<hr>n";
    open(IN,"../../sig.txt");
    while ($sig=<IN>){print $sig;}
    close(IN);
    print "</div>n";
    print "</body></html>n";
}

Comments

comments powered by Disqus