我从 STDIN 读了几行。如何将剩余的 STDIN 传递给从标准输入(例如md5sum
or wc
)读取的命令?
我可以做一个:
read_a_few_lines_from_diamond_operator();
open (C, "|cmd");
while(<>) { print C }
close C;
cleanup_after_C();
但出于效率原因,我不想触摸输入,而是传递 STDIN 的文件句柄。有点像:
seq 10 | (read A; wc)
在read
将其余部分传递给wc
. 但是,我不能使用这个解决方案,因为我需要从我的 perl 程序中启动命令,并且我需要在cmd
完成后进行工作。
我从文件'foo'中读取了几行。如何将剩余部分传递给从标准输入(例如md5sum
or wc
)读取的命令?
我可以做一个:
open (F, "<foo");
read_a_few_lines_from_F();
open (C, "|cmd");
while(<F>) { print C }
close C;
cleanup_after_C();
但出于效率原因,我不想触摸输入,而是传递文件“foo”的其余部分。
我有一种感觉,可以使用诸如select
, open(FOO,">&STDOUT)
, exec 6<&0
, fork
,之类的诡计来完成pipe
。