仅对某些功能要求perl 5.10

时间:2014-06-06 13:10:29

标签: perl version

我有一个perl例程库,我用

加载perl脚本
do "/path/to/library";

库中的大多数函数在perl> = 5.000上运行正常。 但是,其中一个函数依赖于perl> = 5.010,因为它使用线程。

是否有一种简洁的方法允许程序在perl 5.008上运行,并加载库,并且只有在尝试访问受限函数时才会在运行时失败?

我试过

sub threadMap{
  use 5.010; #need perl 5.10 threads or else you get confusing error messages
  my %arg = @_;

但perl似乎只是在阅读库文件时评估'使用':

[js21n17][/u/jamie/bin]> ./jdPerlLib.pl 
Perl v5.10.0 required--this is only v5.8.8, stopped at ./jdPerlLib.pl line 12230.
BEGIN failed--compilation aborted at ./jdPerlLib.pl line 12230.

我将使用这个perlvar http://perldoc.perl.org/perlvar.html# $ ^ V但我想在这里要求智慧,以防这是一个可怕的想法。

1 个答案:

答案 0 :(得分:3)

对于运行时检查,您可以使用

require 5.010;

您也可以使用

进行检查
if ($] >= 5.010) { ... }

也就是说,5.8也支持线程。你可能应该使用

require threads;

您也可以使用

进行检查
use Config qw( %Config );

if ($Config{usethreads}) { ... }