
掲示板ソースをダウンロードするとplやpmという拡張子のものがありました。中身はPerlでした。
拡張子の使い分けを教えてください。
適当に4つのルールを書いてみましたので、間違っていたり、追加するルールがありましたから教えてください。
1 ブラウザがそれ自身にアクセスし、ブラウザのアドレスバーに表示させるならcgiにするべき。
2 Perlのpackageの機能を使うなら、パッケージファイルはplかpmでなくてはならない。
3 Perlのrequireの機能を使うなら、その外部ファイルはplでなくてはいけない。
4 Perlのuseの機能を使うなら、その外部ファイルはpmでなくてはならない。
No.2ベストアンサー
- 回答日時:
基本的に拡張子は、あっても無くてもなんでもOKです。
ただ、モジュールには.pmをつけなければなりません。また、webサーバによってCGIとして使える拡張子に制限がある場合があります。
1.について
言語として、特に拡張子を.cgiにしなければならないというのはありません。.plでも.doでも.hoge
でも基本的には大丈夫ですが、大抵運用するwebサーバによって使える拡張子が制限されています。.cgiしかダメなサーバとか。
2.について
そのような制限はありません。拡張子は何でもOKです。
ただ、前述の通りwebサーバによって拡張子の制限がかかっている場合はCGIとしては実行できません。
3.について
そのような制限はありません。拡張子は何でもOKです。
4.について
その通りです。use関数の対象になる外部ファイルは.pmでなければなりません。
この回答への補足
サーバの方は自分で設定しているので、もしかしたら.cgi以外を.cgiのようにさせることができるかもしれないということは分かるんですが、人が作ったPerlには.plや.pmがあるので、なぜ.cgiにしなかったのか知りたいです。
.pmはuseの対象にするなら必須条件だということをここで教わりましたが、.plはどういう場合に使われるものなんですか?
予想としてはHTMLソースを出力しないものを.plにしているように見えました。
No.3
- 回答日時:
もともと便宜上Perlのスクリプトファイルは拡張子に".pl"がつけられてきました。
Webサーバからプログラムを実行する仕組みとしてCGIが誕生したとき、CGIとして動くプログラムファイルには".cgi"という拡張子をつけるというお約束ができたみたいです。
これは、Webサーバが何でもかんでもプログラムを実行させないように出来た決まりですね。
これは単なる慣例であり、必ず従わなければいけない決まりではありません。
CGIは、どんなプログラムファイル(C言語で作られたものでもシェルスクリプトでもawkでもsedでも)でもCGIとしての仕様を守ればCGIとして動作します。なので、拡張子が.cgiだからといってPerlで書かれたファイルとは限りません。
そのあたりの区別をしたい方は拡張子を.plとしたりするでしょう(私も.cgiは使わず、.plを使います)。
HTMLソースを出力しないものを.plにしている、というのも、ソースを書いた作者次第?だと思います。
No.1
- 回答日時:
4はあってますが、1から3までは必須ではないです。
1) サーバの設定次第ですので、cgiにしたからといって正しく動くとは限りません。
2) package機能は名前空間の制御に利用するものなので、別ファイルにするかは関係ないです。
3) requireは任意のファイル名を指定できます。ただしファイル名でなく、引用符で囲ってない単語(bare word)を指定した場合、挙動が変わります。
詳しくは、ドキュメントperlfuncのrequireとuseのところ、ドキュメントperlmodをご覧ください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
xamppでcgiが動かない
-
cgiとplとpm
-
jcode.plが読み込めない
-
Perlccを使ったCGIプログラムの...
-
環境変数に任意の文字列をセッ...
-
require文が実行できない
-
エクセルで毎月第2週日の水曜日...
-
月の第一週とは
-
週2回のペースって だいたい何...
-
エクセルで相対パスの書き方を...
-
VBA。複数のChangeイベントをま...
-
毎○曜日って、使いますか?
-
c言語の質問です。 ある月のカ...
-
[Excel] ある日の曜日が当月の"...
-
よくある 『 第○(1・2・3・4・...
-
平日朝の国道246線混雑状況につ...
-
ユーザー定義の(aaa)
-
DBを10件毎に表示ページング...
-
CGI.pmのパラメーターの名前と...
-
日付から曜日を求めたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
cgiとplとpm
-
jcode.plが読み込めない
-
xamppでcgiが動かない
-
perlのrequireの動き方について...
-
Locationでターゲット指定はで...
-
htmlからテキストを返すperlを...
-
Perlで属性を変更したい
-
Perlでuse strictと %inの共存
-
コマンドラインでGET or POSTで...
-
require文が実行できない
-
ファイル書込時にPermission de...
-
requireでreturnを使いたいので...
-
Perlで書いたページが表示されない
-
携帯用のページに perl で post
-
Perlのデバッグ方法って。。。...
-
cgiからcgiをコールする。
-
Internal Server Error
-
フォームでインクリメント入力→...
-
KENT WEBのWebpatio(http://ww...
-
pushボタンを押した後、画面を...
おすすめ情報