perl不调用管道参数到可执行文件

perl不调用管道参数到可执行文件,perl,arguments,c-preprocessor,Perl,Arguments,C Preprocessor,我给cmd打电话,比如: perl ScriptGen.pl Target.c %PreProcessorPath%\preproc.exe Arg1 Arg2 > clean.c 我得到的错误意味着Arg1和Arg2没有正确地传递给预处理器 我想通过将目标文件和预处理器路径本身作为perl脚本的参数来调用这个perl脚本,而Arg1 Arg2是perl脚本的参数,preproc可以理解 编辑:有一个 my $cmd = shift @ARGV 在脚本开始分析参数时,脚本会处理这些参

我给cmd打电话,比如:

perl ScriptGen.pl Target.c %PreProcessorPath%\preproc.exe Arg1 Arg2 > clean.c
我得到的错误意味着Arg1和Arg2没有正确地传递给预处理器

我想通过将目标文件和预处理器路径本身作为perl脚本的参数来调用这个perl脚本,而Arg1 Arg2是perl脚本的参数,preproc可以理解

编辑:有一个

my $cmd = shift @ARGV 
在脚本开始分析参数时,脚本会处理这些参数。

这是我的建议:

您可以使用
批处理文件
,而不是在
应用程序中的单行中使用多个参数

创建一个批处理文件-
scriptgen.bat

 SETPATH=%PATH%;%PreProcessorPath%\preproc.exe  
 call preproc.exe %1 %2  
 rem %1 = Arg1 %2 = Arg1  %3 = Target.c 
 perl -w ScriptGen.pl %3 %1 %2 > clean.c
在MS dos提示符下运行:

 scriptgen.bat Arg1 Arg2 Arg3

也许你可以努力让你的问题不那么混乱/混乱?看起来您的期望可能与文档中的行为不同,但我们不知道您的期望是什么。@Jackson:请您解释一下
perl
文件参数是
target.c
还是
preproc.exe
,我们如何获得
arg1
arg2
perl
文件。如果在批处理文件
中运行此操作,请设置
预处理路径\prepc.exe的
路径
,以及具有
Arg1
Arg2
参数的相同
exe
。该命令中没有管道OK,perl输入参数是源文件,必须对其进行修改,其余是传递给perl脚本的参数(第一个是到预处理器的路径,接下来的两个是通过perl脚本直接传递给预处理器的参数)
Target.c
您的意思是这是
源文件