首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测ActiveState版本的perl?

如何检测ActiveState版本的perl?
EN

Stack Overflow用户
提问于 2016-05-05 17:17:39
回答 2查看 946关注 0票数 9

我的CPAN模块之一是不可用 on ActivePerl,通过它的ppm实用程序。显然,我对这个模块的单元测试太彻底了,而且当它试图构建它时,它是ActiveState的构建过程超时的。

因此,我在测试中要做的是检测我的模块何时正在ActivePerl上构建,如果是的话,将为构建过程提供一组更小、更快的测试。

我找到了一种方法是:

代码语言:javascript
复制
($is_activestate) = grep /provided by ActiveState/, qx($^X -v)

但我想知道是否有一个更轻量级的选择。在ActivePerl中总是(且仅)设置的环境变量?Config里有什么吗?还有其他建议吗?

更新:看起来像是在构建过程中设置了$ENV{ACTIVESTATE_PPM_BUILD}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-05 17:55:08

检查它是否在ActivePerl构建下运行并不是最优的。理想情况下,您希望检查它是否在ActiveState的构建环境中运行。我将转储t/00-use.t中的env,以查看它们是否设置了指示此值的变量。

代码语言:javascript
复制
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模块存在。

总能检查所有的人。

代码语言:javascript
复制
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 };
票数 7
EN

Stack Overflow用户

发布于 2016-05-05 19:36:07

根据对activeperl ppm build increase timeout的快速搜索,您可以将这种情况报告给他们的邮件列表/支持,他们将手动增加模块构建的超时值。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37056509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档