16884


Perl の実行ファイルで拡張子が .PL や .pl となっているケースを見かけます。  
Linux などでは大文字、小文字の区別があるのは知っていますが  
Perl のコードでよく2つのパターンを見かけるのは何か規約やHackがあるのでしょうか？

Makefile.PL  
app.pl


CC BY-SA 3.0
2015-09-19T02:15:56.083
16766
2015-09-24T00:55:55.167
12373
question
perl
Perl で foo.pl と foo.PL など大・小文字を使い分ける理由を教えてください


`Makefile.PL`は`ExtUtils::MakeMaker`が作ります。

`ExtUtils::MakeMaker`のドキュメントを見ると、以下のような一文が見受けられます:

<http://search.cpan.org/~bingos/ExtUtils-
MakeMaker-7.10/lib/ExtUtils/MakeMaker.pm>

> 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`はどうして大文字の拡張子を使うの？ということですが、実際のファイルの中を確認すると次のようなコードに出くわします:

<https://github.com/Perl/perl5/blob/blead/Makefile.SH#L447>

[code]

    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`
    
[/code]

他のスクリプトの例も見るに、自分自身のファイルネームを出力する（この場合だとMakefileを作るからMakefile.SH）スクリプトには、便宜的に大文字の拡張子を使う暗黙のルールがあるのではないでしょうか。

makeプロセスがアーキテクチャの違いによって入れ子になっているような場合、出力先に「これは大本だけで必要なファイル」と伝える役割があるように見えました。


CC BY-SA 3.0
2015-09-24T00:55:55.167
16884
2015-09-24T00:55:55.167
62
16766
answer