use Utils::XMLUtils qw(loadXMLFile getNodesFromPath getNodeFromPath getChildren getNodeName getValueFromPath getValuesFromPath checkIfExists createXMLDocument createNewElement assignChild createTextElement wrtiteTofile ); use Digest::SHA1 qw(sha1); sub getHexData { my ($key)= unpack("H*",shift); return $key; } print "Enter the file path :"; my $file = ; chomp($file); print "Enter chunk size :"; my $size = ; chomp($size); open(FILE, $file) || die "Unable to open the file"; my $doc = createXMLDocument(); my $SigData = createNewElement($doc, "SigData"); $len = read(FILE, $data, $size); while ( $len != 0) { $datalen = $size == $len ? $size: $len; $digest = sha1($data); $keydata = getHexData($digest); $data = getHexData($data); $kvpair = createNewElement($doc, "KVPair"); $key = createNewElement($doc, "Key"); $keytext = createTextElement($doc, $keydata); assignChild($key, $keytext); $Value = createNewElement($doc, "Value"); $Valuetext = createTextElement($doc, $data); assignChild($Value, $Valuetext); assignChild($kvpair, $key); assignChild($kvpair, $Value); assignChild($SigData, $kvpair); $len = read(FILE, $data, $size); } wrtiteTofile($SigData,"sample.xml",0); close(FILE);