掲示板ソースをダウンロードすると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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
xamppでcgiが動かない
-
require文が実行できない
-
セッションファイルが作成でき...
-
携帯用のページに perl で post
-
cgiとplとpm
-
月の第一週とは
-
エクセルで毎月第2週日の水曜日...
-
[Excel] ある日の曜日が当月の"...
-
ディレクトリパスの取得について
-
エクセルで相対パスの書き方を...
-
ユーザー定義の(aaa)
-
よくある 『 第○(1・2・3・4・...
-
曜日のなぞ
-
Excel VBA 第〇△曜日の場合休日...
-
LinuxでRTPヘッダを作りたいの...
-
毎○曜日って、使いますか?
-
アンケートなどの1日1回の投...
-
関数ヘッダ?
-
VBAでExcelのヘッダーに文字列+...
-
HTMLでASPを動かしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
cgiとplとpm
-
jcode.plが読み込めない
-
htmlからテキストを返すperlを...
-
Location: で cgi → c...
-
セッションファイルが作成でき...
-
Locationでターゲット指定はで...
-
Perlソースを2つのファイルに分...
-
Quantifier follows nothing in...
-
require文が実行できない
-
use CGI
-
コマンドラインでGET or POSTで...
-
htmlファイルへのcgiの組み込み...
-
www.URL 付のcgi を動かす
-
ファイル書込時にPermission de...
-
xamppでcgiが動かない
-
perlのrequireの動き方について...
-
mt-check.cgiでForbiddenエラー...
-
webからroot権限のコマンドを実...
-
QUERY_STRING が、SSIを使用す...
-
Perlccを使ったCGIプログラムの...
おすすめ情報