2009-06-08 8 views
5

標準的なsite_perl(アーチ以外の場所)の場所はどのようにして見つけることができますか? @INCをループして "site_perl"で終わるパスを見つけることは安全ですか?これを行うための標準的な方法はありますか?Perlの標準site_perlディレクトリはどのようにして見つけられますか?

これを見つけようとする理由は、何百もの個々のモジュールから構築された非常に大きなプロジェクトであり、すべてが独自のMakefile.PLファイル(すべての.pmファイルは独自のCPANスタイルとして構築されていますモジュール)。これに伴い、各モジュールには様々な場所にアーチファクト(テンプレート、.cgiなど)が存在する可能性があり、これらはすべてさまざまな場所に展開する必要があります。これは基本的にすべてを見つけて展開できる単一のMakefileを持っているため、これをコントロールするための第一歩です。次のステップは、バージョン管理の中で合理的なレイアウトにすることです。

私は標準的なインストールツールでこれを行うのに時間を費やしましたが、運がなかった。

+1

なぜあなたはsite_perlを探していますか?あなたがしようとしていることを教えてくれるなら、それをどうやって行うのか教えてください。 :) –

答えて

7
C:\Temp> perl -MConfig -e "print qq{$_ => $Config{$_}\n} for grep { /site/ } keys %Config" 

    d_sitearch => define 
    installsitearch => C:\opt\perl\site\lib 
    installsitebin => C:\opt\perl\site\bin 
    installsitehtml1dir => 
    installsitehtml3dir => 
    installsitelib => C:\opt\perl\site\lib 
    installsiteman1dir => 
    installsiteman3dir => 
    installsitescript => C:\opt\perl\site\bin 
    sitearch => C:\opt\perl\site\lib 
    sitearchexp => C:\opt\perl\site\lib 
    sitebin => C:\opt\perl\site\bin 
    sitebinexp => C:\opt\perl\site\bin 
    sitehtml1dir => 
    sitehtml1direxp => 
    sitehtml3dir => 
    sitehtml3direxp => 
    sitelib => C:\opt\perl\site\lib 
    sitelib_stem => 
    sitelibexp => C:\opt\perl\site\lib 
    siteman1dir => 
    siteman1direxp => 
    siteman3dir => 
    siteman3direxp => 
    siteprefix => C:\opt\perl\site 
    siteprefixexp => C:\opt\perl\site 
    sitescript => 
    sitescriptexp => 
    usesitecustomize => define 

あるいは、@ysthはコメントで指摘するように、あなたが使用することができます* nixのシェルで、Windows上

C:\Temp> perl -V:.*site.* 

$ perl '-V:.*site.*' 

1

@INCはコードまたは環境によって変更することができないため、site_perlで終わる複数のディレクトリを含む可能性があります。

特定のモジュールがインストールされている場所を特定する場合は、%INCを使用してください。

+0

いいえ、私は特定のモジュールをインストールする場所を見つけようとしています。私はインストールターゲットを高度に制御していますが、この段階で@INCを変更することはできませんし、複雑さのためにMakeMaker/etcを使用することもできません。 –

+0

perl -V | grep sitelib -Dsitelib =値 –

+0

@Chasを探します。 Owens:installsitelibではなく、sitelib – ysth

2

perl -Vを実行してください。最後にデフォルト@INCが表示されます。

5

モジュールインストーラ(ExtUtils::MakeMaker、,、Module::Install)を使用しない理由はありますか?

ただし、必要な場合は、Configをロードした後にディレクトリを$Config::Config{'installsitelib'}として使用できます。一部のプラットフォームでは、installsitelibディレクトリにシンボリックリンクされている別のディレクトリを持つ代わりに、このディレクトリが文字通り@INCに表示されないようにperlを構成することがあります。

関連する問題