使用Parallel :: ForkManager的错误

时间:2014-02-07 16:49:24

标签: perl parallel-processing

我正在尝试运行使用Parallel::ForkManager

的Perl脚本
#!/usr/bin/perl

use Parallel::ForkManager;
use LWP::Simple;

my $pm= Parallel::ForkManager->new(10);

for my $link (@ARGV) {
    $pm->start and next;
    my ($fn)= $link =~ /^.*\/(.*?)$/;

    if (!$fn) {
        warn "Cannot determine filename from $fn\n";
    }
    else {
        $0.=" ".$fn;
        print "Getting $fn from $link\n";
        my $rc=getstore($link,$fn);
        print "$link downloaded. response code: $rc\n";
    };

    $pm->finish;
};

但我收到以下错误:

File::Path version 2.06 required--this is only version 1.08 at /usr/lib/perl5/5.8.8/File/Temp.pm line 14.
BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.8/File/Temp.pm line 14.
Compilation failed in require at /usr/lib/perl5/site_perl/5.8.8/Parallel/ForkManager.pm line 441.
BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.8/Parallel/ForkManager.pm line 441.
Compilation failed in require at parallel.pl line 3.
BEGIN failed--compilation aborted at parallel.pl line 3.

我该如何解决?

2 个答案:

答案 0 :(得分:1)

升级您的File :: Path版本。

如错误所示,您运行的是版本1.08,但您运行的ForkManager版本取决于版本2.06。

另请注意,它实际上是File :: Temp,它具有File :: Path依赖关系,而P :: FM依赖于File :: Temp。

无论哪种方式,您都需要更新版本的File :: Path。

答案 1 :(得分:0)

Perl 5.8.8来自2006年。升级到支持的版本