This goes beyond the scope of these scripts, but I've found some 
autoflushes to be less than perfect in all situations... 
I perfer to name pipes/handles and clamp them shut occasionally. That way 
I can ensure flow (at least outward) in .pl scripts. This is especially 
useful when a couple of different scripts or programs are dumping stuff 
into the same file (say a logfile) and you need a 
message-order-with-respect-to-time-perserved...

On Wed, 2 Jan 2002, John W. Krahn wrote:

> Mariana aņez wrote:
> > 
> > I wrote this two scripts (to do "./mynum | ./mycount" on linux shell):
> > 
> > mynum:
> > 
> > #*******************************************************************
> > #         Write a number from 1 to oo
> > #******************************************************************
> > 
> >   #!/usr/bin/perl
> 
> Because standard input and output are buffered you have to add this line
> to get the results you want:
> 
> $| = 1;
> 
> >   my $i=1;
> >   while ($i>0){
> >      print "$i\n";
> >      sleep 5;
> >      $i++;
> >      }
> > 
> > mycount:
> > 
> > #***********************************************************************
> > ****# Read from standard input (STDIN) a number pulsing it with before
> > number
> > # and each 10 seconds print the result value on the screen
> > #***********************************************************************
> > ****
> > 
> > #!/usr/bin/perl
> > 
> > my $sum=0;
> > my $first;
> 
> my $first = 0;
> 
> If you don't initialize $first you will get a warning when you compare
> it to zero in your if statement.
> 
> > my $count;
> > my $last;
> > 
> > local $SIG{'ALRM'}=\&on_count;
> > 
> >  alarm 10;
> > 
> > while (  <STDIN> ) {
> >   my $num = <STDIN>;
> 
> You are reading every _second_ line from STDIN.  Is that really what you
> want?
> 
> >   chop $num;
> >   next if(!($num=~m/(^([0-9]+)$)/));
> >   $sum=$sum+$num;
> >  }
> 
> while ( <> ) {
> # if you really only want every second line then uncomment the next line
> #   next if $. % 2;
>     chomp;
>     next unless /^\d+$/;
>     $sum += $_;
>     }
> 
> 
> > sub on_count{
> >  if ($first==0)
> >    {
> >     $first=1;
> >     $last=$sum;
> >     print "NAN:$sum\n";
> >     }
> >    else{
> > 
> >     $count=$sum-$last;
> >     $last=$sum;
> >     print "Contador=$count\n";
> >     }
> > 
> >   alarm 10;
> > 
> > }
> 
> 
> 
> John
> 


--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to