#!/usr/bin/env perl
#
# Author: Makarius
#
# raw_dump - direct copy without extra buffering
#
use warnings;
use strict;
use IO::File;
# args
my ($input, $output) = @ARGV;
# prepare files
my $infile;
my $outfile;
if ($input eq "-") { $infile = *STDIN; }
else {
  $infile = new IO::File $input, "r";
  defined $infile || die $!;
}
if ($output eq "-") { $outfile = *STDOUT; }
else {
  $outfile = new IO::File $output, "w";
  defined $outfile || die $!;
}
binmode $infile;
binmode $outfile;
# main loop
my $chunk;
while ((sysread $infile, $chunk, 65536), length $chunk > 0) {
  my $end = length $chunk;
  my $offset = 0;
  while ($offset < $end) {
    $offset += syswrite $outfile, $chunk, $end - $offset, $offset;
  }
}
# cleanup
undef $infile;
undef $outfile;