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

cho*_*ida 7 versioning perl

如果有人问这个我很抱歉,但我发现很难找到.

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

对于审计,我在平台5.12上使用'say'.

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

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

Eug*_*ash 9

您可以使用$^V 特殊变量来确定Perl解释器的版本:

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

  • 不是`$ ^ V`新的`$]`? (2认同)

Bra*_*ert 8

这应该工作:

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