I want to read in a stream of characters from STDIN, ten process the information, then ask the user questions and read their answer.
Problem is, I can't figure out what I need to do to seperate the two stages.
Code:
#!/usr/bin/perl # # A program that accepts input from the cmputil command and will diff +the files # in question, prompting the user for a decision, and build an action +file # use File::Basename; $| = 1; open IN, "<$ARGV[0]"; open OUT, ">differences"; while (<IN>) { chop $_; ($file,$problem,@machines) = split(/,/, $_); ($name,$path,$suffix) = fileparse($file,""); print "$name -- $path -- $suffix\n"; if($problem eq "different") { # get the file from the remote machine foreach $machine (@machines) { next if ($machine eq ""); $tempfile = "/tmp/" . $name . "_" . $machine; `rcp $machine:$file $tempfile`; print "comparing $name from $machine\n"; system "diff $file $tempfile"; print "(k)eep or (i)gnore this difference?\n"; $resp = <>; print ">>$resp<<\n"; if($resp eq "k") { print OUT "$machine $file\n"; } } } }
The problem I have is the line $resp = <>; returns immediately without waiting for the user to input anything.
Do I need to flush STDIN or something?
edited: Thu Nov 27 18:44:17 2003 by jeffa - s/pre/code/g
In reply to Reading from STDIN by unstable_geek
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |