If you are piping then try this : @piped_in = <>;
foreach $line(@piped_in) {... > -----Original Message----- > From: Bryan Harris [mailto:[EMAIL PROTECTED] > Sent: Friday, February 21, 2003 2:42 PM > To: [EMAIL PROTECTED] > Subject: reading from a pipe > > > > I'm writing a simple script (qstat) to sum, count, and > average whatever stream of numbers the user throws at it. > > It loops through @ARGV reading files, so it works fine if I say: > > qstat somefile someotherfile > > However I'd like to be able to do: > > awk '{print $1}' somefile | qstat > > This doesn't work. How do I accept input from a pipe? > > TIA. > > - Bryan > > ps. Here's the script, in case that helps: > > > #!/usr/bin/perl -w > # > # qstat, v0.1 > # by Bryan Harris, 2/21/03 > # > # This script provides simple statistics > # about all the numbers in the provided files > # > # Much handier if used in conjunction with > # awk > > # check for sufficient command line inputs > #if ($#ARGV < 0) { > # print "Usage: qstat <list of files>\n"; > # exit(0); } > > $sum = 0; > $count = 0; > $max = -1e24; > $min = 1e24; > > undef $/; > > # loop through files > foreach $file (@ARGV) { > > open(FILE, $file) || die("Couldn't open $file: $!\n"); > $_ = <FILE>; > close(FILE); > > @nums = split; > foreach (@nums) { > if (/^[\d\.\-\+]/) { > $sum += $_; > $count++; > ($_ > $max) && ($max = $_); > ($_ < $min) && ($min = $_); > } > } > > } > > if ($count) { > $avg = $sum/$count; > $range = $max - $min; > print > "sum\tcount\trange\tmin\tmax\tavg\n$sum\t$count\t$range\t$min\ > t$max\t$avg\n"; > } > > exit(0); > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]