如何根据perl的版本添加功能?

时间:2011-03-22 16:21:11

标签: perl versioning

如果有人问过我很抱歉,但我发现很难搜索。

我在本地使用Perl 5.12,但我们的一些机器使用Perl 5.8.8,暂时不会更新。

对于审核我在平台5.12上使用'say'。

我写了一个简单的函数来实现5.8.8的说法,但我不想在5.12上使用它。

有没有办法只在旧版本的Perl上使用我的say函数并使用5.12的'builtin'版本?

2 个答案:

答案 0 :(得分:9)

您可以使用$^V special variable来确定Perl解释器的版本:

BEGIN {
    if ($^V ge v5.10.1) {  # "say" first appeared in 5.10
        require feature;
        feature->import('say');
    }
    else {
        *say = sub { print @_, "\n" }
    }    
}

答案 1 :(得分:8)

这应该有效:

BEGIN{
  no warnings 'once';
  unless( eval{
    require feature;
    feature->import('say');
    1
  } ){
    *say = sub{
       print @_, "\n";
     }
  }
}