也许因为子进程不知道我的散列(请参阅下面的代码),散列%输出没有收集任何内容..除了写入 tmp 文件之外,还有其他方法来收集该值吗?
foreach $Item (@AllItems) {
$pid = $pm->start($Item) and next;
$Temp = qx($Item);
$output{$Item}= $Temp; // This doesn't collect anything. :-(
$pm->finish;
}
$pm->wait_all_children;
TIA,
Tim
分叉进程拥有自己的父进程内存副本(即写入时副本)。写入子进程中的哈希值不会影响父进程中的哈希值。
为了做你想做的事,你需要使用某种 IPC。请参阅perlipc http://perldoc.perl.org/perlipc.html联机帮助页对各种可能性进行了冗长的讨论。
对于这样的事情,我可能会使用简单的东西,比如磁盘上的哈希值。DB_File http://search.cpan.org/~pmqs/DB_File/DB_File.pm提供了一个很好的绑定哈希接口。您可以这样做:
use strict;
use warnings;
use DB_File;
tie my %output, "DB_File", "output.dat" ;
foreach my $item( @AllItems) {
my $pid = $pm->start and next;
$output{$item} = qx($item);
$pm->finish;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)