プログラムを楽に作るには、やはり優れたサブルーチンが必要だと思う。そういうわけです。



で、メールアドレスの「@」なんだけども、perl5では「@」が「”〜”」の中ではそのまま使えない。ということらしい。実はこれに気づかなくて色々やっていたのを全部消してしまった。JavaScriptみたいにエラーの行が出れば楽なのに・・・。ブラウザからいきなり実行するのは良くないようだ。



なんだかいきなりつまづいてしまった・・・。ちゃんと回避方法(”@”か’@’と書く)も書いてあったのに (T_T)



perlでは引用符によって変数やエスケープ文字「」の扱いが違うらしい。「”〜”」の中では有効だけど、「’〜’」の中ではそのままの文字列として表示される。引用符の中に変数を書くというのが慣れない事だけど、引用符を区別する事で便利な使い方もあるのかもしれない。



サブルーチンとは言っても、この状態だとSSIの「include」と変わらないけどね。せっかく「if文」も使おうと思ってたのに。



ちなみに、JIS版もせっかく作ったけど、うちの環境ではダメみたい。コードの変換をしてないからなのかな・・・?とは言っても、その変換方法もまだ良くわかってないけど。



perl(CGI?)で日本語を使うときは、文字コードはEUC-JPが適しているらしい。バックスラッシュ(または円マーク)「」のコードが「Shift_JIS」では漢字にも使われている。だから、その文字を使うと特殊な働きをして文字が変わってしまう。気をつけよう。「」の他にも文字コードについては色々と問題があるようだ。JISは問題外らしい・・・。



あと、IEで「CGIソース」をみると、時々「HTML」として解釈されるようだ。そういうときは、「更新」ボタンでしょう。きっと正常に表示されます。



・・・時は過ぎ・・・



この当時は、「CGIソース」は別でテキストファイルを作成して表示していたので、IEでは「HTML」として解釈されていた。今は表示方法が違うので大丈夫です。



サブルーチンは確かに便利だとは思うけど、ここで使ったサブルーチンは、ほとんど意味が無い(爆)



ソースコード



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

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

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

print "うまく動くかな?n";

&printFooter;

exit;
}

sub printHeader{
print "Content-type: text/htmlnn";
print "<html lang=ja><head><title>$_[0]</title>n";
foreach (@styles){
print "<link rel="stylesheet" type="text/css" href="$_">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";
print "<address><a href="mailto:nobu3@x.age.ne.jp">Written by Nobu3</a></address>n";
print "</div>n";
print "</body></html>n";
}