仅某些函数需要perl 5.10
我有一个perl例程库,我用它加载perl脚本仅某些函数需要perl 5.10,perl,version,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 erro
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$^V,但我想我会在这里寻求智慧,以防这是一个糟糕的想法。对于运行时检查,您可以使用
require 5.010;
您也可以使用
if ($] >= 5.010) { ... }
use Config qw( %Config );
if ($Config{usethreads}) { ... }
也就是说,5.8也支持线程。你可能应该使用
require threads;
您也可以使用
if ($] >= 5.010) { ... }
use Config qw( %Config );
if ($Config{usethreads}) { ... }
尝试使用$^V,但有趣的是,5.008不支持使用$],因此现在使用$]在5.8上可以正确生成线程,但在它们开始后,我收到了关于我要求线程调用的CodeRef的投诉,所以我只是强迫用户使用5.010+。我选择了“$]>=5.010”。谢谢