如何找到perl的标准站点\u perl目录?

如何找到perl的标准站点\u perl目录?,perl,Perl,如何找到标准的site_perl(非特定于arch的)位置?在@INC上循环并找到以“site_perl”结尾的路径是否安全,或者是否有一种标准的方法来实现这一点 试图找到这个的原因是,我有一个非常大的项目,它由数百个单独的模块组成,所有模块都有自己的Makefile.PL文件(几乎每个.pm文件都是作为自己的CPAN样式模块构建的)。除此之外,每个模块可能在不同的位置有工件(模板、.cgi等),所有这些工件都需要部署到不同的位置,没有什么是标准的。这是试图控制它的第一步,基本上只有一个Make

如何找到标准的site_perl(非特定于arch的)位置?在@INC上循环并找到以“site_perl”结尾的路径是否安全,或者是否有一种标准的方法来实现这一点

试图找到这个的原因是,我有一个非常大的项目,它由数百个单独的模块组成,所有模块都有自己的Makefile.PL文件(几乎每个.pm文件都是作为自己的CPAN样式模块构建的)。除此之外,每个模块可能在不同的位置有工件(模板、.cgi等),所有这些工件都需要部署到不同的位置,没有什么是标准的。这是试图控制它的第一步,基本上只有一个Makefile可以找到并部署所有东西,下一步是在版本控制中合理布局它


我花了很多时间尝试使用标准安装工具来实现这一点,但没有成功。

循环
@INC
是不安全的,因为它可以被代码或环境修改,因此可能包含以site\u perl结尾的多个目录

如果您试图确定给定模块的安装位置,请使用

或者,正如@ysth在评论中指出的,您可以使用:

C:\Temp> perl -V:.*site.*
在Windows和

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

在*nix shell中。

只需运行
perl-V
。它将在最后打印默认的@INC。

是否有理由不使用模块安装程序(,)之一


但是,如果必须,该目录(在加载
Config
之后)将作为
$Config::Config{'installsitelib'}
提供。请注意,一些平台可能会配置
perl
,这样该目录就不会出现在
@INC
中,而是有一些其他的目录符号链接到
installsitelib
目录。

不,我正试图找到安装特定模块的位置。我对安装目标有很高的控制权,但在这个阶段无法更改@INC,也无法使用MakeMaker/etc.perl-V | grep sitelib查找-Dsitelib=value@Chas. Owens:installsitelib,而不是SiteLib为什么要找site_perl?如果你告诉我们你想做什么,我们可能会告诉你怎么做
 $ perl '-V:.*site.*'