プロが教える店舗&オフィスのセキュリティ対策術

最近、Perlを勉強し始めました。

そこで、ホームページにメールフォーム等を設置しようと考えていて
(まだそこまでのレベルには達していません・・)

まず、簡単なコードをホームページにいれてみようと思うのですが
例えば「print "hello!!!\n";」とperlで書きます。(untitled1.pl)
で、コマンドプロンプトでは、「hello!!!」と出ることを確認しました。

そこで、ホームページ(HTML)にそのperlで作ったコードを載せたいのですが、
<script type="text/javascript" src="untitled1.pl"></script>
これでは、実行されませんでした。

まだ、理解できていません・・・
どのようにすればいいのでしょうか??

A 回答 (2件)

No.1です。



えっと。。。(^^;
PerlでCGIプログラムを作成する際の事を基礎から学んでいますか?
初心者向けの書籍などに従ってです。

えっと。。。
HTMLはWebブラウザがその内容を解釈し、そこに指定されたように画面描画を行います。
サーバ上に置かれたHTMLファイルはそこにあるだけではただのHTMLという言語仕様で掛かれたテキストファイルに過ぎません。
そのファイルの内容をWebサーバーがWebブラウザ側からの「このHTMLファイルの内容を送れ」という要求に従って送り出すだけです。
で。
CGIプログラムというのはWebブラウザ側から送られて来たデータ(多くの場合は画面で入力された内容)を受け取ってその処理を行い、処理結果の画面のHTMLをプログラム内で生成して送出するものです。

って、ここまで書いた内容の意味は分かりますか?
「分かる」として。
そのCGIプログラムを書くには幾つも言語がありますが、その一つがPerlです。
PerlのプログラムはC言語などのようにコンパイル&リンクを必要としません。書いたソースプログラムを拡張子.plというファイル名とし、実行ディレクトリに置いておいて呼び出せばよいだけです。お手軽ですね。

で。CGIプログラムですから最終出力はHTMLです。
正確にはhttpの通信仕様に則ったHTMLです。「httpの通信仕様に則った」の意味は「これに続いて送出されるのはHTMLですよ」という宣言が頭に無いといけません。
なので最低限、、、

print "Content-type: text/html\n\n";
print "hello!!!\n";

でないとダメです。

更に。
CGIプログラムはWebブラウザ側から呼び出されます。
HTMLファイルの中に、、、

<script type="text/javascript" src="untitled1.pl"></script>

と書き、そのHTMLをWebブラウザ側から呼び出してみたのだと思いますが、それはHTMLファイルの読み込みを指定しただけです。
加えて「script type="text/javascript" src="untitled1.pl"」では「Javascriptの入ったファイルuntitled1.plの内容を実行しなさい」という意味になります。
ということはuntitled1.plの内容をロードして実行するのはブラウザに含まれるJavascriptの実行エンジンです。JavascriptエンジンはPerlのprint文を理解できません。。。

ということで何をしようとした結果、実際はどういうことになっていまったか理解できたでしょうか?

ではPerlを使ったCGIの作り方を一からしっかり勉強しましょう。
「Perl CGI 初級」とか「Perl CGI 入門」とかいった適当なキーワードで検索すると解説ページがたくさんみつかるはずです。
例えば以下のような。

http://www.aimix.jp/cgi/

参考まで。
    • good
    • 0
この回答へのお礼

ありがとうございました。
<a href="http://◯◯◯◯◯◯.jp/cgi/hello.pl">テスト</a>
とし、サーバーに転送し、実行が確認できました。

お礼日時:2016/10/05 15:12

まず、Perlで作成したプログラム(拡張子が.plのファイル)をWEbサーバ上のCGIプログラムを配置する場所に置かねばなりません。



ご自身のホームページはご自身で運用するサーバ上にあるのでしょうか?
それとも何らかの業者のサーバ上にあるのでしょうか?
後者の場合、その業者のホームページサービスとして「CGIを置けます」となっていないと無理です。
CGIプログラムを配置するディレクトリ(フォルダ)には実行権が無いとだめでかつ、Webサーバの設定で「CGIプログラムはこのディレクトリにある」とされていなければなりません。この場合は使用できる機能に制限があることも多いですからその点の確認もお忘れなく。
ご自身でサーバ運用されている場合はこの設定をご自身で行うことになります。

その上で。
Webページ上にメールのSubject、本文を入力するフィールドアあって、そのページ上の「送信」ボタンを押すとプログラム内や設定ファイルなどに指定されたメールアドレスへ入力された内容のメールが送信される、、、というのを簡単に実現するのはmailコマンドです。
ということでCGIプログラムの実装言語がPerlであろうが何であろうが、プログラムの中でmailコマンドを叩けばOKです。
以下の解説が参考になるでしょう。

http://qiita.com/shuntaro_tamura/items/40a7d9b44 …

サーバのOSがWindowsの場合は以下も。

http://qiita.com/nightyknite/items/8132a41a4fa5c …

参考まで。
    • good
    • 0
この回答へのお礼

コメントありがとうございます。
先ほど、業者に問い合わせたところ、CGIをおけることを確認し
パーミッション、Perlpath等を聞いて変更したのですが、
上手く表示できません・・・

HTMLでのPerlの呼び出し方法が理解できていないのだと思うのですが、
これは<iframe>や<script>と様々な方法があるようですが、
この質問の
「print "hello!!!\n";」の場合は、どのようにするのでしょうか?

お礼日時:2016/09/28 13:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!