解決済みの質問

質問No.1856144
困ってます
困ってます
お気に入り投稿に追加する (0人が追加しました)
回答数3
閲覧数1527
cgiとplとpm
掲示板ソースをダウンロードするとplやpmという拡張子のものがありました。中身はPerlでした。
拡張子の使い分けを教えてください。

適当に4つのルールを書いてみましたので、間違っていたり、追加するルールがありましたから教えてください。

1 ブラウザがそれ自身にアクセスし、ブラウザのアドレスバーに表示させるならcgiにするべき。

2 Perlのpackageの機能を使うなら、パッケージファイルはplかpmでなくてはならない。

3 Perlのrequireの機能を使うなら、その外部ファイルはplでなくてはいけない。

4 Perlのuseの機能を使うなら、その外部ファイルはpmでなくてはならない。
投稿日時 - 2005-12-23 22:41:18

質問者が選んだベストアンサー

回答No.2
基本的に拡張子は、あっても無くてもなんでもOKです。ただ、モジュールには.pmをつけなければなりません。
また、webサーバによってCGIとして使える拡張子に制限がある場合があります。

1.について
言語として、特に拡張子を.cgiにしなければならないというのはありません。.plでも.doでも.hoge
でも基本的には大丈夫ですが、大抵運用するwebサーバによって使える拡張子が制限されています。.cgiしかダメなサーバとか。

2.について
そのような制限はありません。拡張子は何でもOKです。
ただ、前述の通りwebサーバによって拡張子の制限がかかっている場合はCGIとしては実行できません。

3.について
そのような制限はありません。拡張子は何でもOKです。

4.について
その通りです。use関数の対象になる外部ファイルは.pmでなければなりません。
投稿日時 - 2005-12-24 01:07:52
この回答を支持する
(現在0人が支持しています)
補足
サーバの方は自分で設定しているので、もしかしたら.cgi以外を.cgiのようにさせることができるかもしれないということは分かるんですが、人が作ったPerlには.plや.pmがあるので、なぜ.cgiにしなかったのか知りたいです。

.pmはuseの対象にするなら必須条件だということをここで教わりましたが、.plはどういう場合に使われるものなんですか?
予想としてはHTMLソースを出力しないものを.plにしているように見えました。
投稿日時 - 2005-12-24 23:26:07
この質問は役に立ちましたか?
2人が「このQ&Aが役に立った」と投票しています

ベストアンサー以外の回答 (2)

回答No.3
もともと便宜上Perlのスクリプトファイルは拡張子に".pl"がつけられてきました。
Webサーバからプログラムを実行する仕組みとしてCGIが誕生したとき、CGIとして動くプログラムファイルには".cgi"という拡張子をつけるというお約束ができたみたいです。
これは、Webサーバが何でもかんでもプログラムを実行させないように出来た決まりですね。

これは単なる慣例であり、必ず従わなければいけない決まりではありません。
CGIは、どんなプログラムファイル(C言語で作られたものでもシェルスクリプトでもawkでもsedでも)でもCGIとしての仕様を守ればCGIとして動作します。なので、拡張子が.cgiだからといってPerlで書かれたファイルとは限りません。
そのあたりの区別をしたい方は拡張子を.plとしたりするでしょう(私も.cgiは使わず、.plを使います)。

HTMLソースを出力しないものを.plにしている、というのも、ソースを書いた作者次第?だと思います。
投稿日時 - 2005-12-25 03:27:55
この回答を支持する
(現在0人が支持しています)
お礼
ありがとうございます。
cgiファイルの管理で中身の言語をファイル名で判断できるするためにも.plが有効ということですね。
投稿日時 - 2005-12-26 01:38:10
回答No.1
4はあってますが、1から3までは必須ではないです。

1) サーバの設定次第ですので、cgiにしたからといって正しく動くとは限りません。
2) package機能は名前空間の制御に利用するものなので、別ファイルにするかは関係ないです。
3) requireは任意のファイル名を指定できます。ただしファイル名でなく、引用符で囲ってない単語(bare word)を指定した場合、挙動が変わります。

詳しくは、ドキュメントperlfuncのrequireとuseのところ、ドキュメントperlmodをご覧ください。
投稿日時 - 2005-12-24 01:00:36
この回答を支持する
(現在0人が支持しています)
お礼
ありがとうございます。
投稿日時 - 2005-12-24 23:26:47
別のキーワードで再検索する
もっと聞いてみる

関連するQ&A

回答募集中

この他の関連するQ&Aをキーワードで探す

別のキーワードで再検索する
-PR-

OKWaveのおすすめ情報

特集

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

カテゴリ
Perl
-PR-

ピックアップ

ノウハウ共有サイト

-PR-
-PR-