アプリ版:「スタンプのみでお礼する」機能のリリースについて

独学でmacでパールを勉強しています。
始めてからまだ1週間すこしくらい。
教科書読みながら、
CGIへフォームを渡す所の段階まで進んできました。

現段階で、htmlからperlへフォームを渡そうとしているのですが、
上手く行きません。

状況としては、htmlのフォームを入力して、登録を押す。

成功であれば→実行結果が表示されるはずなのですが、
現段階ではFinderがその実行htmlの場所を開くだけという形になっています。

下記は実験用に使っているソースです。
ーーーーーーーーーーー

htmlは

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>test</title>
<style type="text/css">
</style>
</head>

<body>
<h1>メンバーズリスト</h1>

<form method="post" action="form.cgi">
<p>
名前:<br/>
<input type="text" name="name"/>
</p>
<p>
性別:
<input type="radio" name="sex" value="male" checked>男
<input type="radio" name="sex" value="female">女
</p>
<input type="checkbox" name="megane">メガネを付けてる
</p>
<p>
<select name="kankei">
<option value="yuujin">友人
<option value="kaisya">会社関係
<option value="sonota">その他
</select>
</p>

<p>
住所: <textarea name="jyusyo" rows="5" cols="40" ></textarea>
</p>
<p>
<input type="submit" value="登録"/><input type="reset" value="クリア"/>
</p>
</form>

</body>
</html>


ーーーーーーーーーーーーーーーーー
perlは




#!/usr/bin/perl

require 'cgi-lib.pl';

&ReadParse(*form);

$name = $form{'name'};
$sex = $form{'sex'};
$megane = $form{'megane'};
$kankei= $form{'kankei'};
$jyusyo = $form{'jyusyo'};

print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD><TITLE>情報受け取り</TITLE></HEAD>\n";
print " <BODY>\n";

print "<H1>情報受け取り</H1><HR>\n";

print "名前:${name}<BR>\n";
print "性別:${sex}<BR>\n";
print "めがね:${megane}<BR>\n";
print "関係:${kankei}<BR>\n";
print "住所${jyusyo}<BR>\n";

print "</BODY>\n";
print "</HTML>\n";
__END__

です。
ちなみに localhost上で同一ファイルに入れて、
動かしてます。

ご確認の上、ご助言ください、



perlの教科書に書いてあった構文は、
htmlの学習をするために使ってきたものと全く違ったため、
要点だけ残す形で、再度書いたものです。

htmlの文章がおかしいのか、perlがおかしいのか、

頭が変になりそうです。お助けください。

A 回答 (2件)

アドバイスになりますが。



CGIとHTMLとPerlは分けて勉強してください。

まずは、Perlそのものの使い方を一通り勉強してください。
ついでに、Unix 系OSの基本事項(ディレクトリ構成とか、権限とか)を勉強してください。

Perlで動作するものができれば、それまで単にprintしていたものを、一定の書式になるようにすればCGIとして動作するようになります。httpサーバーで違うディレクトリになっても、変更するべき箇所がすぐにわかるはずです。


> require 'cgi-lib.pl';

いまどき、cgi-lib.plは使わないでしょ。
少くともOSX 10.6にはperl 5.10が付いています。CGI.pmが使えます。


> 教科書通り、
> sudo cp ./Desktop/httpd.conf /private/etc/httpd/
> と打って、パスワードを打つと
> デスクトップに/private/etc/httpd.conf ファイルがデスクトップにコピーされるとの記載があるのですが

本当ですか?
もしそうなら、その教科書は間違いです。
・sudo 管理者権限でコマンドを実行するためのコマンド
なのでいったん置いておくと、
cp ./Desktop/httpd.conf /private/etc/httpd/
ってどんなコマンドになるか、理解していますか?
この「./Desktop」の「.」 ってなんだかわかってますか?
    • good
    • 0
この回答へのお礼

勉強してきました。ここまで丸1月掛かりましたが、やっとUNIXとアルパカ本クラスの知識は身に付きました。けど、上の文章見ても意味がわかりませんね。進化したのか、後退したのか・・・、ただ、使ってる参考書が悪かったんだろうな~とも思います。ご返答ありがとう御座いました!

お礼日時:2011/03/08 20:41

確認ですが、もちろん何らかのhttpd(apacheなど)を介して動かしているのですよね?

この回答への補足

教科書通り、見よう見まねでやっているのですが、

設定の書き換えが必要と指示があるのですが、
教科書通り、
sudo cp ./Desktop/httpd.conf /private/etc/httpd/
と打って、パスワードを打つと
デスクトップに/private/etc/httpd.conf ファイルがデスクトップにコピーされるとの記載があるのですが、実際には、
cp: ./Desktop/httpd.conf: No such file or directory

と表示されてしまい、次に進むことができません。

どのような対応をとればいいのでしょうか?

補足日時:2011/02/09 17:58
    • good
    • 0
この回答へのお礼

ありがとうございます。
一度、perl自身の勉強から、再度行いたいと思います。

お礼日時:2011/02/13 00:32

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