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

サンプルスクリプトのなかに
use CGI qw(:cgi :form);
use CGI::Carp qw(fatalsToBrowser);
use Image::Magick;

と書かれていたのですがuse CGI::Carp qw(fatalsToBrowser);は意味わかったのでコメントアウトしましたがuse CGI qw(:cgi :form);は何を読み込んでいるのですか?コメントアウトしても大丈夫でしょうか?
イメージマジックは使うのでそのままにしてあります

よろしくお願いします

A 回答 (3件)

> エラーチェックははずそうと思います



CGI:Carpは「エラーチェック」ではありません。
通常、CGIでエラーになった時などは「500 Internal Server Error」とかブラウザに表示されるだけで、何が起ったかわかりません。
それを、Perlのエラーメッセージをhttpサーバーのログやブラウザ画面に出力するようにして、エラー内容を確認できるようにするためのものです。

fatalsToBrowserは、エラー内容がブラウザに表示されるので、公開している状態での使用はセキュリティ上問題ですが、CGI::Carp自体は、ログや特定のファイル等に出力されるので、ちゃんと設定した上で残すのがいいかと思います。


> :formはHTMLのフォームを出力するだけですか?

http://perldoc.jp/docs/modules/CGI-3.49/CGI.pod# …
http://perldoc.jp/docs/modules/CGI-3.49/CGI.pod# …

HTMLの文字列を作成します。出力はしません。


> perlはphpと違ってuse CGIを使わないと定義された関数を使えないんですか?

外部で定義された関数を、何の手続きもなく使える言語、というのは、ちょっと思い付きません。
PHPでも、requireとかを使って別のファイルに書かれたプログラムを呼び出したりしますよね?

CGiモジュールは、Perlという言語の一部ではなく、後から機能を追加するモジュールです。
現在では、Perlをインストールすると、多くのモジュールも一緒にインストールされますが、本来は、別途インストールしなければ使えないものです。

この回答への補足

phpではアロー演算子はclassのメソッドを呼び出すときに使われますが
perl use CGIもclassなのでしょうか?

補足日時:2013/10/13 14:07
    • good
    • 0
この回答へのお礼

回答ありがとうございます
調べたらつかわれていました!
これだとおもうのですがどうゆう意味でしょうか?
$q = CGI->new;
%FORM = $q->Vars;

お礼日時:2013/10/13 14:04

内部で使っていないならコメントアウトしても構いませんが、意味なくおかれているとは思いません。



 use CGI::Carp qw(fatalsToBrowser);を残して、use CGI qw(:cgi :form);をコメントアウトして実行させれば、使われているかいないかすぐ分かりますよ。
 use CGI::Carp qw(fatalsToBrowser);はローカルでテストできる環境にあればないほうが良いかも・・

この回答への補足

phpではアロー演算子はclassのメソッドを呼び出すときに使われますが
perl use CGIもclassなのでしょうか?

補足日時:2013/10/13 14:07
    • good
    • 0
この回答へのお礼

回答ありがとうございます
調べたらつかわれていました!
これだとおもうのですがどうゆう意味でしょうか?
$q = CGI->new;
%FORM = $q->Vars;

お礼日時:2013/10/13 14:03

マニュアルより


http://perldoc.jp/docs/modules/CGI-3.49/CGI.pod# …
読めばわかると思いますが。

これらの関数群を別な方法で置き換えるなら削除しても問題ありません。
このまま使うつもりなら必要です。



use CGI をコメントアウトしたい、ということから考えるに、CGI用のスクリプト(の一部)を単体動作用のスクリプトに使いたい、ということだと思いますが、そうなのでしょうか?

もし、そうではなくてCGIとして使いたい、ということなら、デバグ中はCGI::Carpはそのままにした方がいいと思います。
そうでないと、何処でエラーになっているか解らないので
    • good
    • 0
この回答へのお礼

回等ありがとうございます
完成しているのでエラーチェックははずそうと思います

:formはHTMLのフォームを出力するだけですか?
perlはphpと違ってuse CGIを使わないと定義された関数を使えないんですか?

お礼日時:2013/10/13 11:21

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