【发布时间】:2014-01-29 19:42:06
【问题描述】:
我正在编写一个使用其他 Perl 脚本(不是我的)的 Perl 脚本。其中一些接收带有标志的输入,而另一些则没有。我需要的另一件事是将这些脚本的输出重定向到不同的文件。例如:
W\O flags: script1.pl arg1 arg2 arg3 > output1.log
W flags: script2.pl -a 1 -b 2 -c 3 > output2.log
底线 - 我使用 system() 来执行此操作,但后来我发现脚本花费的时间太长。
我尝试使用do() 执行此操作,但没有成功(例如here)。
那么最快的方法是什么?
【问题讨论】:
-
system不会增加可测量的开销。你能更好地解释一下“最快”的方式是什么意思吗? -
在 perl 已经存在的任何地方使用
system()不会减慢外部脚本的速度(除非您真的内存/文件描述符/等不足)足够快(即:未嵌入)。 -
你想同时运行多个东西吗?
-
@Zaid,它不需要重新编译所有内容,因此可能需要几秒钟。
-
@user1953271、
system和do不是一回事。你不能只用一个换另一个。事实上,do EXPR没有任何意义。如果您想在与第一个相同的解释器中执行第二个脚本,请将其放入一个模块中。
标签: perl