Perlのヘッダー |
Perlで作成するCGIスプリクトの先頭行には、必ずPerlが実行できるサーバーのパスを入力します。 |
#!/usr/local/bin/perl |
#!/usr/local/bin/perl |
サーバーによりパスは異なりますので、サーバー提供者に確認が必要です。
大体、上の2つのどちらかでいけるようです
|
HTMLヘッダー |
CGI実行結果のほとんどは、HTMLドキュメント上に表示されます。
(グラフィックアクセスカウンターはGIF画像を表示します。)
Perl上でHTMLドキュメントを生成するには、HTMLヘッダーが必要になります。 |
print ”Content−type:text/html¥n¥n”; |
このヘッダーより下に、HTMLタグでドキュメントを生成します。
HTMLタグの記述は、ホームページ作成時し同じです。
|
Perlからのデーター出力 |
Perlからのデーターをブラウザに出力(表示)するには、print関数を使います。 |
print ”CGIスプリクト(Perl)からブラウザへの出力です。¥n”;
print ”<タグ>¥n”;
¥nは改行、¥n¥nでは空行のエスケープシーケンス |
例
#!/usr/local/bin/perl |
Perlが実行できるサーバーのパス
Perlヘッダーとデーター(ボディー部分)とを分けるため、空行を入れる |
print "require 'jcode.pl\n"; |
日本語変換ライブラリーの宣言 |
print "Content-type: text/html\n\n"; |
Perl上でHTMLドキュメントを生成 |
print "<!DOCTYPE HTML PUBLIC -//IETF//DTD
HTML//EN>\n"; |
ドキュメントタイプの記述
実行には関係ない(無くても可) |
print "<html>\n"; |
ファイル内容がHTMLと定義 </html>との間にHTMLドキュメントを記述 |
print "<head>\n"; |
ドキュメントに関する情報を</head>との間に記述 |
print "<meta http-equiv=Content-Type content= text/html;
charset=x-sjis>\n"; |
ドキュメント情報の定義 ブラウザでの表示にシフトJISを使用と定義 |
print "<title>ブラウザに出力</title>\n"; |
HTMLドキュメントのタイトル |
print "</head>\n"; |
ドキュメントに関する情報の終了 |
ここから下が表示されるHTMLドキュメント |
print "<body bgcolor=#000000 text=#FFFFFF>\n"; |
背景を黒、文字を白に設定 |
print "CGIスプリクト(Perl)からブラウザへの出力\n"; |
文字データーを表示 |
print "<p>"; |
空行を表示 |
print "これが基本です。\n"; |
文字データーを表示 |
print '<A
href="../kijyutu.html"><h1>戻る</h1></A>'; |
CGIスプリクトからここへ戻るためのリンク |
print "</body>\n"; |
表示されるHTMLドキュメントの終了 |
print "</html>\n"; |
HTMLの終了 |
#!/usr/local/bin/perl
print "require 'jcode.pl\n";
print "Content-type:
text/html\n\n";
print "<!DOCTYPE HTML PUBLIC -//IETF//DTD
HTML//EN>\n";
print "<html>\n";
print
"<head>\n";
print "<meta http-equiv=
Content-Type content=
text/html; charset=x-sjis>\n";
print
"<title>ブラウザに出力</title>\n";
print
"</head>\n";
print "<body bgcolor=#000000
text=#FFFFFF>\n";
print "CGIスプリクト(Perl)からブラウザへの出力\n";
print
"<p>\n";
print "これが基本です。\n";
print '<A
href="../cgi_3.html"><h1>戻る</h1></A>';
print
"</body>\n";
print "</html>\n"; |
<html>
<head>
<meta
http-equiv="Content-Type" content="" text/html;
charset="x-sjis">
<title>ブラウザに出力</title>
</head>
<body
bgcolor="#000000"
text="#ffffff">
CGIスプリクト(Perl)からブラウザへの出力
<p>
これが基本です
<a
href="../kijyutu.html"><h1>戻る</h1></a>
</body>
</html> |
このCGIスプリクトを実行すると |
このhtmlを実行すると |
|
ダブルクォート(”)とシングルクォート(’) |
Perlでは文字列はクォーテーション記号で囲むことになっています。(上記例のように) |
ダブルクォート(”)で囲むと、変数や(¥n)といった特殊文字は、それぞれ変数の値や改行記号
などに置き換えられて出力されます。
シングルクォート(’)で囲むと、その文字列通りに出力されます。 |
例
$site =
"簡単CGI";
print "私のウェブサイトは$siteです\n";
print "<p>\n";
print
'私のウェブサイトは$siteです';
$test1 = "ウルトラマン";
$test2 =
"仮面の忍者 赤影";
と代入します。
ダブルクォートの場合
print "$test1\n";
print
"$test2\n";
シングルクォートの場合
print
'$test1';
print '$test2';
実際に違いを見てみましょう。押して!
どうですか、違いが分かりましたか。
ダブルクォートで囲った変数は展開されますが、シングルクォートで囲った変数は展開されません。
スカラー変数だけではなく、配列変数、ハッシュ変数でも同様です。
よくエラーが起こるのは、メールアドレスを変数に代入したときです。
下の2つの例をご覧ください。
#!/usr/bin/perl
$mail1 = "xxx@yyy.com";
print $mail1;
#!/usr/bin/perl
$mail2 = 'xxx@yyy.com';
print $mail2;
下の例ではエラーになりませんが、上の例ではエラーになってしまいます。
先ほど申したように、上の例ではダブルクォートが使われているため、
@yyyという配列変数を変数展開しようするが、ないためエラーとなります。
下の例ではシングルクォートなので展開されないためエラーにならず、メールアドレスが表示されます。
文字化けする文字.
CGIで使う Perl という言語の特性上,以下の文字は文字化けします.
― ソ Ы \ 噂 浬 欺 圭 構 蚕 十
申 曾 箪 貼 能 表 暴 予 禄 兔 喀
媾 彌 拿 杤 歃 濬 畚 秉 綵 臀 藹
觸 軆 鐔 饅 鷭 x x \ \
例えば,「ソースを表示します」は「メ[スを侮ヲします」になってしまいます.
これを防ぐには,これらの文字の後には必ず \ をつけます.
つまり,「ソースを表示します」は「ソ\ー\スを表\示します」と記述することで,防げます.
ダブルクォートやシングルクォートの注意点.
CGIで使う Perl という言語の特性上,ダブルクォートやシングルクォートは注意しなければいけません.
ダブルクォートで囲まれたものの中で,ダブルクォートは使えません.
同様に,シングルクォートで囲まれたものの中で,シングルクォートは使えません.
どうしても使いたい場合は,\ を前につけます.
例えば,
print "<font color="red">";
は,ダブルクォートで囲まれたものの中にダブルクォートがあるので,サーバーエラーとなります.
単純に,"<font color=" で囲まれたとCGIは誤認できるからです.
そこで,
print "<font color=\"red\">";
と記述しなければいけません.
|
Perlの文法 |
・一行目以外の「#」で始まる行は、コメントで実行されません。
行の途中で「#」を使用すると、それ以降がコメントになります。
・実行文の最後には、必ず「;」を置きます。
・変数は、いつでも、何処からでも使用することができます。変数名の宣言も必要ありません。
変数には、「数値」・「文字」のどちらでも代入できます。
・処理の固まり(ブロック)は「{」と「}」で囲みます。
・Perl(UNIX)では大文字・小文字を区別します。 |