是否可以使用'<'将输入传递给另一个脚本在perl中使用system()?

时间:2014-06-25 20:03:50

标签: perl pipe

我看过几个类似的问题,但似乎都没有解决这个问题,或者他们使用了一种我不熟悉的管道形式,或者我正在使用“管道”来代替正确的单词。

首先,我在Windows 7上,我正在尝试做的是获取一个Perl脚本来调用并多次输入到另一个Perl脚本。

我要这样做的方法是使用System()函数。

当直接放入命令行时,这有效,虽然有点草率:

Functionalscript.pl < InputFile > OutputFile

从输入文件中获取内容执行该功能并将其完美地写入输出文件。但是,在我的调用脚本中使用“system()”函数时,输入未注册,但输出文件已创建(它只是空白)。

问题在于:

system("Functionalscript.pl < InputFile > OutputFile")

由于某些原因,当使用它时,functionalscript不会将输入作为stdin接收。有没有办法使这项工作?

2 个答案:

答案 0 :(得分:0)

根据perldoc -f systemhttp://perldoc.perl.org/functions/system.html):

  

如果只有一个标量参数,则检查参数是否为shell元字符,如果有,则将整个参数传递给系统的命令shell进行解析(这是Unix平台上的/ bin / sh -c,但在其他平台上有所不同)。如果参数中没有shell元字符,它将被拆分为单词并直接传递给execvp,这样效率更高。

这意味着如果您的命令中包含><,则应将其传递给shell,输入和输出重定向应按预期工作。

答案 1 :(得分:0)

system("x:/path/perl.exe Functionalscript.pl InputFile > OutputFile")

由mpapec提供,Works。必须包含“x:/path/perl.exe”。