my $cur=$begin; seek($fh,$begin,0); while(!eof($fh) && $cur < $end) { my $buf=1024*16; read $fh, $buf, $end-$cur; $cur+=1024*16; print $buf; } close $fh; autoflush STDOUT 1;