プログラムを楽に作るには、やはり優れたサブルーチンが必要だと思う。そういうわけです。
で、メールアドレスの「@」なんだけども、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/html\n\n";
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";
}
|