求助:如何在一个Perl脚本里同时调用多个脚本(要求多个脚本同时运行)?

求助:如何在一个Perl脚本里同时调用多个脚本(要求多个脚本同时运行)?

例如,我有一个脚本test.pl,需要在test.pl中同时运行两个脚本a.pl和b.pl,并且要求当b.pl运行完之后,终止a.pl.应该如何实现呢?请大家指教
用多进程可以实现. 这个需要先深入学习一下.
OK~用多线程的方法已经解决了同时运行的问题,谢谢楼上的。
但现在出现了一个新问题,就是
在b.pl中有这样的语句: use pr.pm (pr.pm是自己写的一个模块)
然后在执行test.pl时,会给出“在@INC中找不到pr.pm模块”的信息。
但单独运行b.pl时就没有这个问题。
请问是为什么呢?
没有含入标准路径
你可以push进去
是在主脚本里面push吗?
这样:
push @INC, pr.pm;
perldoc perlvar


QUOTE:
原帖由 didistudy 于 2007-10-23 11:54 发表
OK~用多线程的方法已经解决了同时运行的问题,谢谢楼上的。
但现在出现了一个新问题,就是
在b.pl中有这样的语句: use pr.pm (pr.pm是自己写的一个模块)
然后在执行test.pl时,会给出“在@INC中找不到pr ...

pr.pm 和 b.pl是在同一目录?

如果写的是use pr.pm 并且从非b.pl当前目录运行b.pl, 那么需要一个FindBin module;
或者你引入全路径: use lib '/a/lib';  会将/a/lib插入到@INC头部

我的脚本类似这样,假设主脚本位于根目录下
#!/project/TD-RAN/tools/perl-5.8.0/bin/perl
defined(my$pid=fork) or die "Cannotfork!";
if($pid){
print "$pid";
system("perl /localhome/b.pl";
$k = kill 1, $pid;
print "$k\n";
}
else{
exec("perl /localhome/a.pl";
die "can't exec";
}
{
##other codes
}
---------------------------------------------------
想问下楼上,引入全路径改如何做。对路径这些东西不是很熟悉
如果pr.pm在/localhome下, 则在b.pl添加use lib '/localhome';
还有,当我的被调用脚本b.pl里如果包含了一个模块:use pr.pm,
那么我的主脚本test.pl在system(b.pl)之前,是不是也需要 use pr.pm?