unstable_geek has asked for the wisdom of the Perl Monks concerning the following question:
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Reading from STDIN
by holo (Monk) on Nov 27, 2003 at 19:20 UTC | |
by unstable_geek (Acolyte) on Feb 06, 2004 at 18:55 UTC | |
|
Re: Reading from STDIN
by holo (Monk) on Nov 27, 2003 at 18:39 UTC | |
by jweed (Chaplain) on Nov 27, 2003 at 18:44 UTC | |
by holo (Monk) on Nov 27, 2003 at 19:04 UTC | |
by jweed (Chaplain) on Nov 28, 2003 at 19:33 UTC |