サブルーチンを使う

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

で、メールアドレスの「@」なんだけども、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";
}
comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。