
掲示板ソースをダウンロードすると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ランキング
-
jcode.plが読み込めない
-
“パーミッションを変えて、実行...
-
エラー出力をなくしたい
-
月の第一週とは
-
apacheでPerl CGIが作動せず、5...
-
週2回のペースって だいたい何...
-
エクセルで相対パスの書き方を...
-
useする自作のモジュールについ...
-
ユーザー定義の(aaa)
-
DBを10件毎に表示ページング...
-
LinuxでRTPヘッダを作りたいの...
-
プロキシ経由でNet::FTPを利用...
-
携帯用のダウンロード配信
-
VBA。複数のChangeイベントをま...
-
VBAでExcelのヘッダーに文字列+...
-
c# webBrowser 内のpdfファイル...
-
クライアントのIPとマシン名を...
-
C# FTPサーバ カレントディレ...
-
曜日と曜の使い分けがわかりま...
-
エクセルで毎月第2週日の水曜日...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlからテキストを返すperlを...
-
cgiとplとpm
-
cgi-lib.plのオフラインでの使用
-
jcode.plが読み込めない
-
エラー出力をなくしたい
-
“パーミッションを変えて、実行...
-
IIS7とActivePerlを導入しまし...
-
requireについて教えてください。
-
文字の置換に関しての質問です
-
サイト構築について
-
IMGタグにaaa.cgiを指定して、...
-
Perlソースを2つのファイルに分...
-
ファイルの転送。
-
a.cgi → b.cgiへデータの受渡...
-
cgi プログラムについて
-
/httpdocsでのCGI動作を有効化
-
webからroot権限のコマンドを実...
-
perl初心者です
-
perlのcgiで、変数の中身を表示...
-
ブラウザでタグがはみ出る
おすすめ情報