0

我知道system()and qx(),但我需要执行 ~15 bash 命令。例如

mkdir, chown, edquota -p user1 -u user2, cp -r, su - username, git, rm,ln -s

问题

有没有一种在 Perl 中执行许多 Bash 命令的有效方法?

在这种情况下,我不在乎输出。

4

4 回答 4

3

首先,我会尽可能多地对那些 bash 命令使用等效的 Perl 函数,这是您在帖子中包含的大部分命令。然后,对于其余部分,我将使用 system() 或 qx() 或反引号或 IPC:: 模块之一(例如 IPC::Run 或 IPC::Open3)。

于 2012-11-01T14:06:46.863 回答
1

对许多命令使用 bash 语法。;用或&&或任何你喜欢的东西将它们分开( man bash)。

$ perl -E 'system qq{date; date}'
于 2012-11-01T14:03:13.333 回答
1

在 Linux 中,我喜欢 POE 框架的POE::Wheel::Run模块,用于异步运行系统命令(和代码块)。你说你不关心输出,但如果你将来需要它 POE::Wheel::Run 有一个优雅的界面允许我们与流程进行交互。

于 2012-11-01T14:04:08.970 回答
1
my $s = <<END;
echo "1"
echo "2"

echo "3"
END

system("$s");
于 2012-11-01T15:12:56.230 回答