my $data=getData($ARGV[0]); writeData($ARGV[1], $data); sub writeData { my ($filename, $data)=@_; local(*OUT); open(OUT, ">$filename") || die "can not open $filename"; binmode(OUT); print OUT $data; close(OUT); } sub getData { my $filename=shift; local(*IN); open(IN, $filename) or die $!; binmode IN; my ($buf, $data, $n); while (($n = read IN, $data, 1024) != 0) { #print "$n bytes read\n"; $buf .= $data; } close(IN); return $buf; }