formで送信したデータをCGI.pmで受け取った場合と、
cgi-lib.plで受け取った場合に差異があるのでしょうか?

cgi-lib.pl内で「\0」を組み込む処理があるのが気になります。

A 回答 (1件)

pmはモジュールなので


最新版はサーバー側のCpanから導入する必要があります
(ユーザーが手動で入れることもできますが)
またモジュールを使うならstaticで書かないと意味がありません

上級者で自宅サーバを構築しているのであれば
perlが実行時にモジュールを読みにいくので
CGI.pmの方がより速く動くでしょう

しかし、初心者やクライアントでサーバを借りているのであれば
CGI.pmを入れるのは困難です(一見動いていても
裏でエラーをはいていてサーバーに負担を書けていることもある)
のでcgi-lib.plをお進めします。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

どうしても両方を使わないといけない状況であるため、
差異によって分けようと試みていました。

>裏でエラーをはいていてサーバーに負担を書けていることもある
これは怖いですね。。。
なるべくcgi-libを使います。

お礼日時:2007/01/05 22:52

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

このQ&Aと関連する良く見られている質問

Qcgi-lib.plのShort read~というエラーについて

perlで画像掲示板の作っています。今まで特に問題なかったのですが、突然投稿する際に、「Short Read:1370,got 0」というエラーが表示されるようになってしまいました。

cgi-lib.plをrequireしているので、その部分を読んではみたのですが、どういったエラーなのかがわかりません。

cgi-lib.plの解説ページなどもみたのですが、cgi-lib.plがどういったものかということを説明するものばかりでエラーについては探しても見つからなかったのでこちらに投稿しました。

このエラーがどういったもので、どのように対処すればよいかご存知の方がいらっしゃいましたら、ご回答をよろしくお願いします。

Aベストアンサー

さすがに、これだけの情報では分りません。
どの様なコードを実行した時、そのエラーが出たのでしょうか?

サンプルで良いので、エラーが発生するコードを示してください。

Qcgi-lib.pl: Unknown・・・のエラーについて

すみません。どなたかご存知の方教えてください。CGI初心者です。メールフォームのようなものを作っており、実験段階でつまづいています。ファイルをアップし、htmlページから送信すると
「cgi-lib.pl: Unknown Content-type: text/plain 」といった表示がされてしまいます。これはなんの原因が考えられるのでしょうか?
宜しくお願いいたします。

Aベストアンサー

cgi-lib.plが存在しない。
または指定のパスが間違っているとか。

QPerlのcgi-lib.plでデコードされた文字をUTF-8にエンコ

Perlのcgi-lib.plでデコードされた文字をUTF-8にエンコードするにはどんなコードを書けば良いのでしょうか。
"あ"という文字をHTMLフォームから受取って%82%A0というS-JISのバイトコードに再エンコードするコードを質問したら

$a = "あ";
$a =~ s/([^a-zA-Z0-9*\-.@_])/sprintf("%%%02X", ord($1))/eg;
$a =~ s/%20/+/g;
print $a;

という答えを頂きました。コードの意味はよく判らなかったのですが、ちゃんと思惑通り$aは%82%A0になりますので長い間重宝にさせていただいています。
今度は$a="あ";の値をUTF-8の%E3%81%82にエンコードしたいのですが、どのように上記のコードを変更すればよいか教えてください。正規表現というのを使えば出来るのでしょうが、本で読んでもやっぱりわかりません。

Aベストアンサー

> データの送信元のHTMLがUTF-8ならば、一旦cgi-lib.plで
> デコードされた文字も私が使っているコードのままでUTF-8に
> 再エンコードされるということでしょうか?

そのとおりです。
ただ、例外としてformにaccept-charsetを指定するなど
送信する際の文字コードを別途指定した場合はそれに従います。



EncodeもCGIもこれまでのライブラリーと同じように使えるようにする書き方と
オブジェクト指向っぽくする書き方の両方ができるのでいろいろと試してみると
面白いと思います。検索するとドキュメントもかなり豊富ですよ。

Qcgiで拡張子.cgiと拡張子.plの違いってなんですか?

標記の違いはなんでしょうか?
私の使っているサーバがどうも.plしか対応しておらず、困っています。もし、cgiのスクリプトを変形して使えるのであればその方法も教えていただけると助かります。

Aベストアンサー

普通のウェブサーバでは、.cgiはCGIプログラムを見分ける為に使います。つまり、使用言語に関わらず、CでもPerlでもPHPでも、『CGIで』動かすなら.cgiを判断基準にする場合が多いです。これはサーバの設定次第なので、もし設定で.plになっているだけなら、PerlだろうとCだろうと.plで動くと言う事です。(但し、Perl以外の動作環境があるかどうかはサーバ次第です。)

また、普通のウェブサーバでは、.plはPerlコードをウェブサーバが直接解釈する時に使ったりもします。これはCGIのように外部プロセスを起動するのではなく、mod_perl等を用いてウェブサーバ内で解釈してしまうものです。サーバにmod_perlがインストールされている事が前提です。

前者であれば、配付されているCGI等も.cgiを.plに変えて、後は普通に設置すれば動くのがほとんどでしょう。(動かないとすれば別の理由が有力かと思います。)後者であれば、場合によっては若干手を加えなければならないかもしれません。

Q
の場所は?

CGIでデータを受け渡しするアンケートを作っています。html中に書く<form method=post action="***.cgi">~</form>“~”の場所についてですが質問項目を全て挟まなくてはいけませんか?実は、チェックボックスの「最大2つまで回答可」という部分をJavascriptでチェック個数を超えてチェックした時点でアラートが出るようにしてます。その記述中にすでに<form>~</form>タグを制限をかけたい質問に置いているので、質問全体を<form method=post action="***.cgi">~</form>でくくると入れ子になってしまいます。大丈夫ですか?

Aベストアンサー

<form method=post action="***.cgi" name="form1">~</form>
にする。つまり「最大2つまで回答可」という部分だけをonclickでJavascriptを呼び出したらいいと思います。


このカテゴリの人気Q&Aランキング

おすすめ情報