代码之家  ›  专栏  ›  技术社区  ›  Matthew Watson

如何找到perl的标准site_perl目录?

  •  6
  • Matthew Watson  · 技术社区  · 17 年前

    如何找到标准site_perl(非特定于拱门)位置?在@INC上循环并找到以“site_perl”结尾的路径安全吗?或者有标准的方法吗?

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

    4 回复  |  直到 17 年前
        1
  •  8
  •   Sinan Ünür    8 年前
    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
    

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

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

    在*nix shell中。

        2
  •  5
  •   Sinan Ünür    8 年前

    是否有理由不使用其中一个模块安装程序( ExtUtils::MakeMaker , Module::Build , Module::Install )?

    Config )as $Config::Config{'installsitelib'} perl 这样这个目录就不会真正出现在 @INC ,而不是使用符号链接到的其他目录 installsitelib 目录。

        3
  •  2
  •   jiggy    17 年前

    perl -V 。它将在末尾打印默认的@INC。

        4
  •  1
  •   Chas. Owens    17 年前

    绕圈是不安全的 @INC

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