是否可以使用perl中的system()将输入通过管道传送到另一个脚本?
我看过几个类似的问题,但没有一个能解决这个问题,或者它们使用了我不熟悉的管道形式,或者我用管道代替了正确的单词 首先,我使用的是Windows7,我试图做的是让一个Perl脚本调用并多次输入另一个Perl脚本 我要做的是使用系统功能 当直接放在命令行中时,这会起作用,尽管有点草率:是否可以使用perl中的system()将输入通过管道传送到另一个脚本?,perl,pipe,Perl,Pipe,我看过几个类似的问题,但没有一个能解决这个问题,或者它们使用了我不熟悉的管道形式,或者我用管道代替了正确的单词 首先,我使用的是Windows7,我试图做的是让一个Perl脚本调用并多次输入另一个Perl脚本 我要做的是使用系统功能 当直接放在命令行中时,这会起作用,尽管有点草率: Functionalscript.pl < InputFile > OutputFile 它从输入文件中提取内容,执行函数并完美地将其写入输出文件。但是,在调用脚本中使用系统函数时,输入未注册,但创建的
Functionalscript.pl < InputFile > OutputFile
它从输入文件中提取内容,执行函数并完美地将其写入输出文件。但是,在调用脚本中使用系统函数时,输入未注册,但创建的输出文件为空
问题在于:
system("Functionalscript.pl < InputFile > OutputFile")
出于某种原因,当使用该函数时,functionalscript不会以stdin形式接收输入。有没有办法让这一切顺利进行?根据perldoc-f系统:
如果只有一个标量参数,则会检查该参数是否有shell元字符,如果有,则会将整个参数传递给系统的命令shell,以便在Unix平台上解析它,即/bin/sh-c,但在其他平台上会有所不同。如果参数中没有shell元字符,则会将其拆分为单词并直接传递给execvp,这样效率更高
这意味着如果您的命令具有>或
由mpapec提供,工程。必须包括x:/path/perl.exe。systemx:/path/perl.exe Functionalscript.pl InputFile>outputfile工作得很好,谢谢!请注意,如果systemFunctionalscript.pl
system("x:/path/perl.exe Functionalscript.pl InputFile > OutputFile")