我有一个需要执行另一个Perl脚本的Perl脚本.第二个脚本可以直接在命令行上执行,但我需要在第一个程序中执行它.我需要传递一些参数,这些参数通常在它独立运行时传递(第一个脚本定期运行,并在一组系统条件下执行第二个脚本).
Google的初步搜索建议使用反引号或system()调用.有没有其他方法来运行它?(我猜是的,因为它是我们正在讨论的Perl:P)如果我需要从被调用的程序中捕获输出,那么首选哪种方法(如果可能的话,将输出管道输出到stdout,就像第二次一样程序被直接调用)?
(编辑:哦,现在 SO提出了一些相关问题.这个问题很接近,但与我提出的问题并不完全相同.第二个程序可能需要一个小时或更长时间才能运行(大量I/O),所以我不确定一次性调用是否适合这种情况.)
我正在尝试修改其他人编写的脚本,我想让我的脚本与他的脚本分开.
我写的脚本以print一行输出,该行输出由空格分隔的所有相关数据.
例如: print "$sap $stuff $more_stuff";
我想在另一个perl脚本的中间使用这些数据,我不确定是否可以使用系统调用我写的脚本.
例如: system("./sap_calc.pl $id"); #obtain printed data from sap_calc.pl here
可以这样做吗?如果没有,我该怎么办呢?
system():
我正在尝试source从Perl脚本(script.pl)编写脚本.
system ("source /some/generic/script");
Run Code Online (Sandbox Code Playgroud)
请注意,此通用脚本可以是shell,python或任何其他脚本.此外,我无法将此通用脚本中的逻辑复制到我的Perl脚本中.我试着替换system`` exec,和qx//.每次我收到以下错误:
不能执行"source":script.pl第18行没有这样的文件或目录.
我在互联网上遇到了很多论坛,讨论了这个问题的各种原因.但他们都没有提供解决方案.有没有办法source从Perl脚本运行/执行命令?