Perl:复杂数据结构的校验和

时间:2018-08-06 18:25:28

标签: perl data-dumper

Perl中是否有一个软件包/函数,可以轻松地为我提供

  • 简短信息(例如数字,短字符串)
  • 像哈希值/校验和(例如MD5)
  • 具有很好的区别(例如,像MDx,SHAx这样的加密哈希)
  • 表示复杂数据结构的内容(例如,哈希数组的哈希)。

我想到的最好的主意是

  1. 将我的结构序列化为字符串(例如,使用Data :: Dumper)

  2. 使用MDx散列字符串

但是也许还有一些更优雅的方式。

2 个答案:

答案 0 :(得分:5)

过去,我使用Data :: Dumper(具有@mob所指的排序键)+ Digest :: MD5方法来创建复杂数据结构的校验和。就我而言,目的是比较两个或多个数据结构的相等性。

(非常简单)代码段:

>0.5

简介:

set.seed(150)
r1 <- raster(ncol=10, nrow=5) #Create rasters
values(r1) = round(runif(ncell(r1),5,25))
r2 <- raster(ncol=10, nrow=5)
values(r2) = round(runif(ncell(r2),0.1,1))

selfun <- function(x,y) {
  ifelse( x >0.5, y,0)
}  # It works only for >0.5 gridcells, i need this gridcells and its adjacent
  #two gridcells in each direction.
# it's like buffering the >0.5 grid cells with adjacent two grids and retaining corresponding grid cells values.

r3<-overlay(r2,r1,fun=selfun)
plot(r3)

有关Digest算法速度的见解,请访问https://metacpan.org/pod/Digest#Digest-speed

的Digest Perl模块。

希望这会有所帮助

答案 1 :(得分:3)

我会考虑使用

Sereal Encoder

我将其用于类似的问题,对此感到非常满意, 它很快,提供了我可能想到的所有选项, 并花了我很长时间才开始。

例如,它允许您选择如何处理对象, 以及是否对散列上的键排序非常有用。

玩得开心!