Perl中系统和反引号和管道之间的区别是什么?

Nat*_*man 27 perl system pipe backticks

Perl支持运行外部程序的三种方式(我知道):

system:

   system PROGRAM LIST
Run Code Online (Sandbox Code Playgroud)

如:

system "abc";
Run Code Online (Sandbox Code Playgroud)

反引号如:

`abc`;
Run Code Online (Sandbox Code Playgroud)

通过管道运行它,如:

open ABC, "abc|";
Run Code Online (Sandbox Code Playgroud)

它们之间有什么区别?这就是我所知道的:

  1. 您可以使用反引号和管道轻松获取命令的输出.
  2. 就是这样(在未来的编辑中更多?)

dfa*_*dfa 36

  • system():运行命令并返回命令的退出状态
  • 反引号:运行命令并返回命令的输出
  • 管道:运行命令,允许您将它们用作句柄

此外,反引号将执行程序的STDOUT重定向到变量,系统将其发送到主程序的STDOUT.