gpt4 book ai didi

perl - 如何检测 perl 的 ActiveState 版本?

转载 作者:行者123 更新时间:2023-12-04 03:42:51 25 4
gpt4 key购买 nike

my CPAN modules 之一是 not available在 ActivePerl 上通过它的 ppm效用。显然我对这个模块的单元测试太彻底了,ActiveState's build process times out当它尝试构建它时。

所以我想在我的测试中做的是检测我的模块何时在 ActivePerl 上构建,如果是,则为构建过程提供更小更快的测试集。

One way I've found to do this是:

($is_activestate) = grep /provided by ActiveState/, qx($^X -v)

但我想知道是否有更轻量级的选择。在 ActivePerl 中始终(且仅)设置的环境变量? Config 中的某些内容?还有其他建议吗?

更新:看起来像 $ENV{ACTIVESTATE_PPM_BUILD} 在这些构建期间设置。

最佳答案

检查它是否在 ActivePerl 构建下运行并不是最佳选择。理想情况下,您想检查它是否在 ActiveState 的构建环境中运行。我会将环境转储到 t/00-use.t看看他们是否设置了一些变量来表明这一点。

info("$_=$ENV{$_}") for sort keys %ENV;

您也可以联系 ActiveState 并询问他们的建议。

或者,您可以使最慢的测试仅按需运行(例如,当存在特定环境时)。 5 分钟的测试对其他人来说似乎也有点过分。

至于检查您是否正在运行 ActiveState 构建,这里有一些可能性:
  • use Config; print Config::local_patches();返回一个包含 ActivePerl Build 的字符串.
  • $Config{cf_email}设置为 support@ActiveState.com
  • ActivePerl::Config 模块存在。
  • ActivePerl::PPM 模块存在。

  • 可以随时检查所有这些。
    use Config qw( %Config );

    my $is_activeperl = 0;
    $is_activeperl ||= eval { Config::local_patches() =~ /ActivePerl/i };
    $is_activeperl ||= $Config{cf_email} =~ /ActiveState/i;
    $is_activeperl ||= eval { require ActivePerl::Config };
    $is_activeperl ||= eval { require ActivePerl::PPM };

    关于perl - 如何检测 perl 的 ActiveState 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37056509/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com