q.u*_*tow 5 unix shell perl pipe
如果我在 Unix/Linux 系统上的 Perl 脚本中执行此操作:
open(my $fh, 'cat|');
Run Code Online (Sandbox Code Playgroud)
是否涉及外壳?如果没有,那怎么办:
open(my $fh, 'cat -v|');
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我想避免使用 shell,我什至知道该怎么做:
open(my $fh, '-|') || exec('cat', '-v');
Run Code Online (Sandbox Code Playgroud)
但简洁也很有价值。
从open,以下代码示例
每个块中的最后两个示例将管道显示为“列表形式”,尚未在所有平台上支持。一个好的经验法则是,如果您的平台有一个真正的分支(换句话说,如果您的平台是 Unix,包括 Linux 和 MacOS X),您可以使用列表形式。您可能希望使用管道的列表形式,这样您就可以将文字参数传递给命令,而不会有 shell 解释其中的任何 shell 元字符的风险。 但是,这也阻止您打开管道到故意包含 shell 元字符的命令,[...]
(我的重点)
在此之前的最后一个例子是
Run Code Online (Sandbox Code Playgroud)open(my $fh, "-|", "cat", "-n", $file);
顺便说一下,这几乎正是你从问题中得到的例子。
所以使用“列表形式”并且没有外壳。这也适用于系统(但是,唉,不适用于qx)
归档时间: |
|
查看次数: |
164 次 |
最近记录: |