大佬教程收集整理的这篇文章主要介绍了Perl:将打开的文件句柄传递给读取STDIN的程序,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
read_a_few_lines_from_diamond_operator(); open (C,"|cmd"); while(<>) { print C } close c; cleanup_after_C();@H_696_2@但出于效率原因,我不想触摸输入,而是传递STDIN的文件句柄.有点像:
seq 10 | (read A; wC)@H_696_2@在将其余部分传递给wc之前,read读取尽可能多的内容.我不能使用这个解决方案,因为我需要从我的perl程序内部启动命令,我需要在cmd完成后完成工作. @H_696_2@我从’foo’文件中读了几行.如何将剩余部分传递给从标准输入读取的命令(例如md5sum或wC)? @H_696_2@我可以做一个:
open (F,"<foo"); read_a_few_lines_from_F(); open (C,"|cmd"); while(<F>) { print C } close c; cleanup_after_C();@H_696_2@但出于效率原因,而是传递文件’foo’的其余部分. @H_696_2@我有一种感觉,可以使用像SELECT,open(FOO,“>& STDOUT),exec 6<& 0,fork,pipe这样的技巧来完成.
perl -E'say $_ x 500 for "a".."z"' \ | perl -e'<>; <>; exec("cat");' \ | less@H_696_2@cat不是从第二行的开头开始,而是从“q”的中间开始(在字节8192处)! @H_696_2@如果您希望这样做,您必须从readline(<>)的读取行切换到使用sysread读取单个字节. @H_696_2@关注更大的图景,我认为有一个解决方案:
open(STDIN,"<","foo") or die $!; read_a_few_lines(*STDIN); my $pos = tell(STDIN); open(STDIN,"foo") or die $!; sysseek(STDIN,$pos,SEEK_SET); system(@cmd); ...@H_696_2@或者甚至可能:
open(STDIN,"foo") or die $!; read_a_few_lines(*STDIN); sysseek(STDIN,tell(STDIN),SEEK_SET); system(@cmd); ...@H_696_2@未经测试.
以上是大佬教程为你收集整理的Perl:将打开的文件句柄传递给读取STDIN的程序全部内容,希望文章能够帮你解决Perl:将打开的文件句柄传递给读取STDIN的程序所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。