つい最近perlに手を付けて、非常に手こずっています。何に手こずっているかも申しますと、ほんの通りにプログラムを書いてもうまく動作しないことです。本は「Perl/CGI超入門」(藤森○絵)筆です。入力フォームのボタンをクリックしてもWEBページ(localhost)が「開くことができません」とでます。HTML、○.plどちらも指定したフォルダに入っています。HTMLのページは入力フォームですがちゃんとWEBに出ます。でも、フォームの中の文字列を取得してCGIのページになると表示されません。perlはCygwin,Activperlとも試してみました。CGIのページに跳んだときのURLは本に書いているURLと同じくでます。
著者へ質問できるようなアドレスも無く、技術評論者に質問できるようなページもないので、なすすべ無しといったところです。私のPCの設定に問題があるのかもと思い、インターネットセキュリティーソフトをおアンインストールしてみましたが同じでした。内心、これを超初心者として出版しているのであれば、本当に初心者のものは皆頭にきてしょうがないだろうなというのが本音です。perl自体の言語で引っかかっているのではなく、サンプルプログラムが動作しない(コピペで)。どなたか同じ本を買った方で、原因が分かるか方おりませんでしょうか。
No.7ベストアンサー
- 回答日時:
> そのときの、URLを見てみると、>
http://localhost/httpd/cgi-bin/64.pl?name=&zipco …のように表示がでます。> localhostとhttpdが入っていますが、これをhttp://localhost/cgi-bin/64.pl と書き直してやるとwebが表示されました。
えーと、
/httdp/cgi-bin
というディレクトリ構成になっていると思いますが、CGIスクリプトから
見る場合、/httpd という部分は指定しないようになっていませんか?
色々設定できるので断言できませんけど、
http://localhost/
としたときの基準位置が c:/httpd/ かなにかで、スクリプトには
そこは書かずに localhost/sample.html と書けば
c:/httpd/sample.html を参照するように anttpd がよろしくやってくれたはずです。
同様に、
http://localhost/cgi-bin/cgi-sample.pl
と書けば、
c:/httpd/cgi-bin/cgi-sample.pl を見に行くので、逆に
http://localhost/httpd/cgi-bin/cgi-sample.pl
という参照をしてしまうと、期待したファイルは見えないはずです。
任意のHTMLファイルから 64.pl を呼び出すときの href= ... の
部分はどうなっていますか?
ありがとうございます。localhost/httpdと出るのが原因であることが分かっていたのですが、ボタンをクリックするとそうなってしまってこまっておりました。一度全部ファイルを削除して、もう一度ファイルの中を整理しましたら、きちんと動作しました。原因はいまだに分かりませんが、今は言うことを聞いて動作してくれていますので、ようやく投げ出したくなった気持ちも落ち着きました。言語自体は簡単みたいなので、どうにかなりそうかなと少しやる気も出てきました。皆さんには本当に助けていただいて感謝しております。ありがとうございました。
No.6
- 回答日時:
インフォシークの場所を使って実行しましたが
ちゃんと動きますね(^w^
perlの位置(インフォシークにあわせて)を変えたのとcgi-lib.plをDLしただけ。
ありがとうございます。なにやら少し原因が分かってきました。
HTMLのページからボタンをクリックします。クリックによってcgi-bin/64.plに飛びます。すると「webを表示できない」となります。そのときの、URLを見てみると、http://localhost/httpd/cgi-bin/64.pl?name=&zipco …のように表示がでます。localhostとhttpdが入っていますが、これをhttp://localhost/cgi-bin/64.plと書き直してやるとwebが表示されました。htmlファイルはhttpd/64.html、CGIファイルはhttpd/cgi-bin/64.pl、ライブラリーはhttpd/cgi-bin/cgi-libです。ためしにhtmlファイルをcgi-binの中に入れてみてもだめでした。なぜ、URLが正しく表記されてこないのはなぞです。
No.5
- 回答日時:
#1です。
AnHTTPDは自分も使っています。最初のサンプルが動いているのなら、
AnHTTPDとperlとのつながりもOKのようですね。
自分のローカルで試そうとしたが、最近はperlを使っていないので
レンタルサーバにhtmlとplを上げてみました。レンタルサーバには
perlがあるのは確かなのですが、cgi-libの場所は不明なので、
require "cgi-lib.pl";
&ReadParse();
の2行はコメントにして、実行したところ動きました。
という事は、ityounomiさんが自分で言っていたように、cgi-libの
問題の可能性大ですね。
一度、わたしの試したと同じことをして動作確認してはどうでしょう。
それで動くようだったら、確実にcgi-libに問題を絞り込めます。
No.4
- 回答日時:
#3の補足にあるスクリプトは一本のものですか?
であればこれでは動きませんよ。
まず#!の行がファイルの先頭にあり、最初に出力するのは
ヘッダー情報でなければなりません。
が、補足にあるものでは真ん中あたりですよね。
あと、ヒアドキュメントのターミネータの消し残しらしきごみが
あるので、これでエラーになっているかもしれません。
もう一度どのように本に載っているのか確かめてはどうですか。
ありがとうございます。ファイルはHTMLファイルとCGIファイルの2つに分かれています。もちろん、スクリプトは別になっています。
ゴミの部分もサンプルプログラム自体が動かないので・・・。なんとなく自分的にはライブラリーの問題のような気がしています。ライブラリーにつながっていないスクリプトは動きます。ライブラリーもCGIファイルと同じフォルダに入れておりますが。
No.3
- 回答日時:
こんにちは、皆さんと同じく本は持っていません。
(localhost) という事は、お使いのパソコン一台でやっているのですよね?
1.WEBサーバーは何を使っているのですか?
2.ブラウザの URL に http://localhost/ と入力して実行キーを押したら、何が表示されますか?
#1氏も聞かれていますが、まずそこからでしょうね。
これは、
>perl自体の言語で引っかかっているのではなく、サンプルプログラムが動作しない(コピペで)。
以前の問題ですので、まずこれを補足してもらわなければ、皆さん回答のしようがないです。
この回答への補足
<html>
<head>
<title>申込み画面</title>
</head>
<body>
<h1>申込み画面</h1>
<form action=cgi-bin/64.pl method="get" >
<p>名前:<input type="text" name="name" size="24"></p>
<p>郵便番号:<input type="text" name="zipcode" size=8>
住所:<input type="text" name="addr" size=80></p>
<p>支払方法:
<select name="pay">
<option value="現金" selected>現金
<option value="クレジットカード">クレジットカード
</select>
</p>
<input type="submit" value="申込み">
</form>
</body>
</html>
EOL
#!/cygwin/bin/perl
require "cgi-lib.pl";
&ReadParse();
print <<HTML_DOCUMENT;
content-type: text/html
<html>
<head>
<title>受付画面</title>
</head>
<body>
<h1>受付確認画面</h1>
<table border="1">
<tr>
<td>お名前</td>
<td>$in{'name'} 様</td>
</tr>
<tr>
<td>商品のお送り先</td>
<td>$in{'zipcode'} $in{'addr'} </td>
</tr>
<tr>
<td>ご請求方法</td>
<td>$in{'pay'}</td>
</tr>
</table>
<br>
<p>以上の内容で商品を受け付けました。<br>
ありがとうございました。</p>
</body>
</html>
HTML_DOCUMENT
EOL
これがうまくいかないのです!!!!
cgi-libはこのcgiと同じフォルダに入っています。
助け舟ありがとうございます。webサーバーは中田昭雄さんが作成したAN HTTPDというフリーソフトです。その本はそれを使用してのサンプルプログラムです。PCを立ち上げてHTTPDのアイコンをクリックして、下のタスクに小さく表示された後、htttp://localhostとURLに入れて、ENTERすると「WEBサイトによってこの表示を拒否されました」とでます。下のサンプルプログラムでは普通に表示されます。URLもhttp://localhost/cgi-bin/61.plのように表示されています。
サンプルプログラムでの実行なので、変なところに全角とかも入っていないと思いますし、もう・・・・!!!
#!/cygwin/bin/perl
$fierst_name = "吉田";
$family_name = "藤森";
$FIEST_NAME ="yosida";
$FAMILY_NAME = "fuzimori";
print <<HTML_DOCUMENT;
content-type: text/html
<html>
<body>
私の名前は$family_nameです。<br>
皆さん、私のことは「$fierst_name」と呼んでください。<br><br>
My name is $FIERST_NAME $FAMILY_NAME.<br>
My family name is $FAMILY_NAME.<br>
Please call me $FIRST_NAME.<br>
</body>
</html>
HTML_DOCUMENT
EOF
No.2
- 回答日時:
こんにちは。
#1の方と同じく本は持っていませんが、適当にperlで掲示板を作成したことがあります。その時は、ネットで勉強しました。私はとほほさんのページがかなり参考になりました。よろしければご参考にされて下さい。参考URL:http://www.tohoho-web.com/wwwcgi6.htm
No.1
- 回答日時:
外してるかもしれませんが、
その本は持ってないですが、なんだかwebサーバが動いてないようにみえますが、どうでしょう。
「入力フォームですがちゃんとWEBに出ます」という事ですが、入力フォームのhtmlをブラウザにドラッグして開いているとかいう事ないですか。そうだとすると、urlのエリアがhttp:でなくfile::で始まってます。
あるいは、webサーバのドキュメントルート下にcgiプログラムを置いてないとか。
ありがとうございます。ご指摘の点どちらもクリーしているんですが、だめなんです。
cgi-lib.plもcgiのフォルダの中に入っています。
どうも、
reqire "cgi-lib.pl";
&ReadParse();
あたりが問題のような気がしています。
バージョンが合わないとか、何かありそうな気がしています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー 無料のレンタルサーバで、スクレイピング(?)はできますか? 2 2022/05/07 10:09
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- 確定申告 e-taxで開業届を出す方法がわかりません 1 2022/06/01 19:00
- 画像編集・動画編集・音楽編集 musescore3.5 で再生時、ページスクロールしない 1 2022/11/07 19:29
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- WordPress(ワードプレス) wordpressでphpを読み込みたい 1 2022/10/30 23:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Locationでターゲット指定はで...
-
perlのrequireの動き方について...
-
cgiとplとpm
-
IMGタグにaaa.cgiを指定して、...
-
Location: で cgi → c...
-
useとrequireでエラー
-
セッションファイルが作成でき...
-
月の第一週とは
-
【機械式腕時計のメカニズムの...
-
エクセルで毎月第2週日の水曜日...
-
よくある 『 第○(1・2・3・4・...
-
6月の第2 第4火曜日は何日...
-
毎○曜日って、使いますか?
-
週2回のペースって だいたい何...
-
エクセルで相対パスの書き方を...
-
apacheでPerl CGIが作動せず、5...
-
Perl の外部モジュールの利用方法
-
[C#]ListView一覧表示時の幅設...
-
DBを10件毎に表示ページング...
-
SuseLinux CGI
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
cgiとplとpm
-
perlのrequireの動き方について...
-
jcode.plが読み込めない
-
Quantifier follows nothing in...
-
require文が実行できない
-
ファイル書込時にPermission de...
-
useとrequireでエラー
-
htmlからテキストを返すperlを...
-
Perlのデバッグ方法って。。。...
-
PDFJが動作しない
-
画像のURLの変数を別のCG...
-
perlのcgiで、変数の中身を表示...
-
perlをインストールしたのに使...
-
CGIの中にinclude
-
perl初心者です
-
プログラムを書き足すことについて
-
gifcat.pl:助言お願い致します
-
バイナリファイルのアップロード
-
phone.plというモジュールを使...
-
さくらレンタルサーバーのライ...
おすすめ情報