そりゃ、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>";
&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";
}
|