Perl 关于在程序运行过程中重新开启标准输入的问题
2015-10-30 19:08
597 查看
遇见问题是,如何程序运行的时候已经将标准输入使用”<“符号或者”|“符合在命令行定向为一个文件。可是在程序的运行过程中希望从键盘得到输入内容。因为/dev/tty为当前进程的控制台,
STDIN为当前的标准输入. 如果重定向,例如:
perl script.pl <myfile.txt
STDIN被指向
myfile.txt, 但是
/dev/tty仍然来自于控制终端。所有的Unix都是这样,不单单是指这个perl。那么解决方案:
#!/usr/bin/perl -w use strict; $| = 1; my $stream; while (<>) { $stream .= $_; } open STDIN, "/dev/tty" or die; print "Do you want to process the stream? "; my $ans = <STDIN>; chomp $ans; print "Got '$ans'\n"; print "stream = $stream"; #... exit; __END__测试:
$ echo foo | ./stdinDo you want to process the stream? yesGot 'yes'stream = foo发现标准输入重新指向键盘。问题解决。祝君好运。本文出自 “EIT流浪汉” 博客,请务必保留此出处http://zicowarn.blog.51cto.com/3815716/1708173
相关文章推荐
- cocos2dx java调用c++
- java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor
- 按回车不提交,表单验证,验证之后提交。
- keepalive监控nginx
- hdu1032 The 3n + 1 problem
- .net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind解决办法
- haproxy配置文件详解
- Case函数的使用及注意点
- GCC damangling stack traces
- Android开发 命名规范
- linux下使用 aapt 解包
- HDU 2093 模拟
- 数据挖掘-SPSS Modeler17
- Android-Android4.3 蓝牙BLE初步
- [OpenJudge 7834]分成互质组 迭代加深+剪枝
- Linux C 指针
- ### OpenCV安装(Linux)
- Java对象相关元素的初始化过程
- cut,sort,uniq
- Android-ble蓝牙开发略解