sub Checksum { my @Arguments = @_ ; my $Start = $Arguments[0] ; my $Size = $Arguments[1] ; my $FileName = $Arguments[2] ; my $FileHandle ; unless ( sysopen $FileHandle, $FileName, 0 ) { die "\nsysopen failed"; } my $BufferByte = 0 ; my $Checksum = 0 ; my $ChecksumLoopCounter = 0 ; my $ChecksumByteOffset = $Start ; unless ( sysseek($FileHandle, $Start, 0) == $Start ) { die "\nsysseek error" ; } while ( $ChecksumLoopCounter < $Size ) { unless ( sysread ( $FileHandle, $BufferByte, 1) == 1 ) { die "sysread size error" ; } my $Byte = ord($BufferByte); $Checksum = unpack("S" , pack("S", $Checksum + $Byte)); $ChecksumLoopCounter++ ; $ChecksumByteOffset++ ; } close $FileHandle ; return $Checksum; }