use
				 LWP
				::
				Simple;
  
				use
				 Parallel
				::
				ForkManager;
  
				
						
				
				
						
						
  
				@links
				=
				( 
    [
				"
				http://www.foo.bar/rulez.data
				"
				,
				"
				rulez_data.txt
				"
				]
				,
				 
    [
				"
				http://new.host/more_data.doc
				"
				,
				"
				more_data.doc
				"
				]
				,
				
						
    
				
						
				
				
						
  );
  
				
						
				
				
						
						
  
				#
				 同时使用 30 个进程
				
						
				
				  
				my
				 
				$pm
				 
				=
				 new Parallel
				::
				ForkManager(
				30
				); 
  
				foreach
				 
				my
				 
				$linkarray
				 (
				@links
				) {
    
				$pm
				->
				start and 
				next
				; 
				#
				 开始 fork
				
						
				
				
						
    
				my
				 (
				$link
				,
				$fn
				) 
				=
				 @
				$linkarray
				;
    
				warn
				 
				"
				Cannot get $fn from $link
				"
				 
      
				if
				 getstore(
				$link
				,
				$fn
				) 
				!=
				 RC_OK;
    
				$pm
				->
				finish; 
				#
				 do the exit in the child process
				
						
				
				  }
  
				$pm
				->
				wait_all_children;
		 
		首先通过 new 来初始化一个 ForkManager 对象,同时必须标明最大进程数。如果使用 0 的话就可以避免 fork 来达到调试程序的作用。
		然后使用 $pm->start 来开始 fork。 $pm 在子进程时返回 0 ,父进程时返回子进程的进程号(具体请参阅 Perl 的 fork 文档)。“and next” 用来跳过父进程。注意:如果 fork 失败的话, $pm->start 就提示错误,程序结束。
		$pm->finish 结束子程序(假设我们一开始使用了 start 来 fork)
		注意:在子进程中不能使用 $pm->start。 如果你想在子进程中使用另外一组子进程,你必须再初始化一个 Parallel::ForkManager 对象。
from: http://www.perlchina.org/archive/archive.php?action=archive&page=44