use warnings; use strict; use IO::Select; open(RD, '<', $0) or die "Can't open RD: $!"; my $s = IO::Select->new(); $s->add(\*RD); my @r = $s->can_read(); my $cum; if(@r) { # Assign the first 7 lines of this # file to $cum (1 byte at a time), # and print out $cum do { my $byte; sysread $r[0], $byte, 1; $cum .= $byte; } until $cum =~ /new\(\);/; print "\n\$cum:\n\n$cum\n"; } else { print "\@r contains no elements\n"; }