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]