sub Checksum { my @Arguments = @_ ; my $Start = $Arguments[0] ; my $Size = $Arguments[1] ; my $FileHandle = $Arguments[2] ; my $BufferByte = 0 ; my $Checksum = 0 ; my $ChecksumLoopCounter = 0 ; my $ChecksumByteOffset = $Start ; while ( $ChecksumLoopCounter < $Size ) { unless ( sysread ( $FileHandle, $BufferByte, 1, $ChecksumByteOffset ) == 1 ) { die "sysread size error" ; } my $Byte = pack("C",unpack("C",$BufferByte) ); print "\nByte: ".$Byte;#." BufferByte: ".$BufferByte ; $Checksum = pack("S", unpack ("S", $CheckSum) + $Byte ) ; # This line implements the looping 16 bit sum $ChecksumLoopCounter += 1 ; $ChecksumByteOffset += 1 ; } return $Checksum; }