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]