use File::Slurp; open my $in_file, '<', "file"; binmode($file); open ( my $out_file, '>', "reversed" ); binmode($out_file); my ( $buf, $data, $n, $bytes ); while (( $n = read $in_file, $data, 4096 ) != 0 ) { syswrite $out_file, pack( "v*", unpack("n*", $data )); $bytes+=$n; }