码迷,mamicode.com
首页 > 其他好文 > 详细

Perl 关于在程序运行过程中重新开启标准输入的问题

时间:2015-10-31 01:48:12      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:程序   重新   perl   标准输入   stdin   

遇见问题是,如何程序运行的时候已经将标准输入使用”<“符号或者”|“符合在命令行定向为一个文件。

可是在程序的运行过程中希望从键盘得到输入内容。

因为/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 | ./stdin 
Do you want to process the stream? yes
Got ‘yes‘
stream = foo

发现标准输入重新指向键盘。问题解决。祝君好运。

本文出自 “EIT流浪汉” 博客,请务必保留此出处http://zicowarn.blog.51cto.com/3815716/1708173

Perl 关于在程序运行过程中重新开启标准输入的问题

标签:程序   重新   perl   标准输入   stdin   

原文地址:http://zicowarn.blog.51cto.com/3815716/1708173

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!