您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: