質問: Perl の実行ファイルで拡張子が .PL や .pl となっているケースを見かけます。 Linux などでは大文字、小文字の区別があるのは知っていますが Perl のコードでよく2つのパターンを見かけるのは何か規約やHackがあるのでしょうか? Makefile.PL app.pl
回答: `Makefile.PL`は`ExtUtils::MakeMaker`が作ります。 `ExtUtils::MakeMaker`のドキュメントを見ると、以下のような一文が見受けられます: > > This utility is designed to write a Makefile for an extension module from a Makefile.PL. It is based on the Makefile.SH model provided by Andy Dougherty and the perl5-porters. > > > ですので、`Makefile.SH`からの流れで同じ大文字を使った節があります。 じゃあ`Makefile.SH`はどうして大文字の拡張子を使うの?ということですが、実際のファイルの中を確認すると次のようなコードに出くわします: ``` 447 SH_to_target() { 448 echo $@ | sed -e s/\\\.SH//g -e s/_/./g 449 } 450 451 SH='Makefile.SH cflags.SH config_h.SH makedepend.SH myconfig.SH runtests.SH pod/Makefile.SH' 452 shextract=`SH_to_target $SH` ``` 他のスクリプトの例も見るに、自分自身のファイルネームを出力する(この場合だとMakefileを作るからMakefile.SH)スクリプトには、便宜的に大文字の拡張子を使う暗黙のルールがあるのではないでしょうか。 makeプロセスがアーキテクチャの違いによって入れ子になっているような場合、出力先に「これは大本だけで必要なファイル」と伝える役割があるように見えました。