Eve*_*ace 2 perl concatenation system-calls
我试图从Perl脚本运行pdflatex作为系统调用.就像在使用system()中所说,应该执行一个外部程序,system("command", "arg1", "arg2", "arg3");直接运行它,避免打开子shell.当我这样做的时候
system("pdflatex", "LaTexFile", ">& stdout.txt") == 0 or die "pdflatex failed with exit code $?";
Run Code Online (Sandbox Code Playgroud)
输出不写入,stdout.txt而是打印到终端(STDOUT).所以我试过了
system("pdflatex " . "LaTexFile " . ">& stdout.txt") == 0 or die "pdflatex failed with exit code $?";
Run Code Online (Sandbox Code Playgroud)
哪个有效.
如何使用Perl连接字符串概述了如何在Perl中连接.但它没有说明方法的差异.当我定义东西时,我通常会这样做,my $var = "name_$othervar";所以我甚至不使用大括号.
任何解释都表示赞赏.
你是在自问自答. "直接跑,避免打开子壳".的>&是,如果你不使用shell执行该命令未解释的shell语法.
第二种情况有效,因为这是将单个参数传递给system()(打开shell)时的行为.顺便说一句,看看你链接的页面是什么:
system()接受标量或数组作为参数.如果参数是标量,则system()使用shell执行命令(/bin/sh -c command); 如果参数是一个数组,它直接执行命令,