gpt4 book ai didi

perl - 连接的一般行为

转载 作者:行者123 更新时间:2023-12-02 21:53:55 25 4
gpt4 key购买 nike

我正在尝试将 pdflatex 作为 Perl 脚本的系统调用来运行。就像 Using system() 中所说应该使用 system("command", "arg1", "arg2", "arg3"); 执行外部程序以直接运行它并避免打开子 shell。当我这样做时

system("pdflatex", "LaTexFile", ">& stdout.txt") == 0 or die "pdflatex failed with exit code $?";

输出不会写入stdout.txt,而是打印到终端 (STDOUT)。所以我尝试了

system("pdflatex " . "LaTexFile " . ">& stdout.txt") == 0 or die "pdflatex failed with exit code $?";

有效。

How to concatenate strings with Perl概述如何在 Perl 中连接。但它没有说明方法有什么区别。当我定义东西时,我通常会这样做 my $var = "name_$othervar"; 所以我什至不使用大括号。

任何解释表示赞赏。

最佳答案

你回答了你自己的问题。 “直接运行并避免打开subshel​​l”>& 是一种 shell 语法,如果您不这样做,则不会对其进行解释使用 shell 执行该命令。

第二种情况有效,因为这是传递单个值时的行为system() 的参数(打开 shell)。顺便说一下,看看有什么您链接到的页面显示:

system() accepts as argument either a scalar or an array. If the argument is a scalar, system() uses a shell to execute the command (/bin/sh -c
command
); if the argument is an array it executes the command directly,

关于perl - 连接的一般行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18105527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com