如何找到标准的site_perl(非特定于arch)位置?只是循环遍历@INC并找到以"site_perl"结尾的路径,或者是否有标准的方法来执行此操作是否安全?
试图找到这个的原因是,我有一个非常大的项目,由数百个单独的模块构建,所有模块都有自己的Makefile.PL文件(几乎每个.pm文件都被构建为自己的CPAN样式模块).除此之外,每个模块可能在各个位置都有工件(模板,.cgi等),所有这些都需要部署到不同的位置,没有什么是标准的.这是尝试控制它的第一步,基本上只有一个可以查找和部署所有内容的Makefile,下一步将是在版本控制中以合理的布局获取它.
我花时间尝试使用标准安装工具,但没有运气.
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
Run Code Online (Sandbox Code Playgroud)
或者,正如@ysth在评论中指出的那样,您可以使用:
C:\Temp> perl -V:.*site.*
Run Code Online (Sandbox Code Playgroud)
在Windows和
$ perl '-V:.*site.*'
Run Code Online (Sandbox Code Playgroud)
在*nix shell中.
有没有理由不使用其中一个模块安装程序(ExtUtils :: MakeMaker,Module :: Build,Module :: Install)?
但如果必须,该目录可用(加载后Config)为$Config::Config{'installsitelib'}.请注意,某些平台可能会配置perl此目录不会出现在该目录中@INC,而是具有一些符号链接到该installsitelib目录的其他目录.
| 归档时间: |
|
| 查看次数: |
3741 次 |
| 最近记录: |