我知道system()
和qx()
,但我需要执行~15 bash命令。 E.g。
mkdir
,chown
,edquota -p user1 -u user2
,cp -r
,su - username
,git
,rm
,ln -s
问题
是否有一种在Perl中执行许多Bash命令的有效方法?
在这种情况下我不关心输出。
答案 0 :(得分:3)
首先,我会尽可能多地使用相同的Perl函数来执行这些bash命令,这是您在帖子中包含的大部分内容。然后,对于其余的,我要么使用system()或qx()或反引号,要么使用其中一个IPC ::模块(例如IPC :: Run或IPC :: Open3)。
答案 1 :(得分:1)
对许多命令使用bash语法。将它们与;
或&&
或您喜欢的任何内容(man bash
)分开。
$ perl -E 'system qq{date; date}'
答案 2 :(得分:1)
在Linux中,我喜欢POE框架的POE::Wheel::Run模块,用于异步运行系统命令(和代码块)。你说你不关心输出,但如果你将来需要它POE :: Wheel :: Run有一个优雅的界面,允许我们与进程交互。
答案 3 :(得分:1)
my $s = <<END;
echo "1"
echo "2"
echo "3"
END
system("$s");