sub Apache::send_range { my ($r,$fh, $offset, $end) = @_; seek($fh,$offset,0); my $buf; my $bufsiz=4096; my $current_position = $offset; sub read_size { my $amount_to_go = ($end - $current_position); if ($amount_to_go <= $bufsiz) { $bufsiz; } else { $amount_to_go; } } while (read($fh,$buf,read_size)) { $current_position += read_size; $r->print($buf); } }