#!/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;