そりゃ、includeと同じ事くらいはCGIでもやってみないとね・・・。
「open(IN,"ファイル名")」だけど、ファイル名にはサーバーのルートからの指定は無視されるのかな?「/sig.txt」とやると何も表示されなかった・・・。
と思っていたけど、思いっきり勘違いをしていた。CGIを実行するときは、サーバー自身のディレクトリの参照が必要なのだった。だから、ホストのルートではなく、ルートディレクトリを参照していたみたい。ディレクトリの指定も気をつけないと、変なところにファイルを作りかねない・・・。
実は、「テスト1」(便宜上こう呼ぶ)の方だけど、<title>タグの方の変数が訂正してなかった。よく考えてみると、タイトルバーにはURLが表示されていたような気がする。サブルーチンでの引数の扱い方も気をつけよう。
ちなみに、エディタは「Perl Editor」を使っている。プログラミング用のエディタみたいで、サブルーチンや変数の一覧が表示されて、使用されている場所へジャンプする事もできる。エディタとしては少し能力不足だけど、他の人が作ったプログラムを見るのにはとても便利だ。ホイールも認識するのが気に入ってる。意外といいエディタだと思っても、ホイールに対応してないのが多いから、この手のソフトはバージョンアップに期待したい。作者のページは「川千原千」です。
・・・時は過ぎ・・・
「Perl Editor」も結構便利になってきた。漢字コードや改行の種類を気にしないで編集できるのが特にいい感じ。
ソースコード
#!/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/html\n\n";
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";
}
