in reply to Stumped with select->can_read

For example:

my $sel= ...; my $bytes= 16*1024; my %buf; my @ready; while( @ready= $sel->can_read() ) { foreach my $fh ( @ready ) { for my $buf ( $buf{$fh} ) { $buf = '' if ! defined $buf; my $eof= ! sysread( $fh, $buf, $bytes, length($buf) ); while( $buf =~ s/^(.*\n)// || $eof && $buf =~ s/^(.+)$// ) { my $line = $1; if( $line =~ /keyword/ ) { print REDUCEDLOG $line; } } } } }

- tye        

Replies are listed 'Best First'.
Re^2: Stumped with select->can_read (example)
by w1r3d (Initiate) on Aug 06, 2012 at 16:07 UTC

    Wow, awesome! I implemented that into my code, and that seems to work great! Thanks!

    I do have a question, though. I'm not sure what the line: "for my $buf ( $buf{$fh} )" is doing. Is the hash "%buf" getting initialized as the $buf variable gets populated with the sysread calls? That's the only line in the code that I'm struggling to understand. :/

    Thanks again!

    Pedro

      It just makes $buf an alias for $buf{$fh} so I don't have to type the {$fh} part over and over.

      - tye        

        Ah, makes sense. Thanks again =)