perl – 如何创建数据结构的可重复签名?

前端之家收集整理的这篇文章主要介绍了perl – 如何创建数据结构的可重复签名?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一种情况,我想创建一个数据结构的签名:
  1. my $signature = ds_to_sig(
  2. { foo => 'bar',baz => 'bundy',boing => undef,number => 1_234_567,}
  3. );

目的应该是,如果数据结构发生变化,那么应该签名.

有没有确定的方法来做到这一点?

解决方法

最好的方法是使用像 Storable这样的深层次的序列化系统.具有相同数据的两个结构将产生相同的可存储输出的Blob,因此可以进行比较.
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5.  
  6. use Storable ('freeze');
  7.  
  8. $Storable::canonical = 1;
  9.  
  10. my $one = { foo => 42,bar => [ 1,2,3 ] };
  11. my $two = { foo => 42,3 ] };
  12.  
  13. my $one_s = freeze $one;
  14. my $two_s = freeze $two;
  15.  
  16. print "match\n" if $one_s eq $two_s;

…并证明逆向:

  1. $one = [ 4,5,6 ];
  2. $one_s = freeze $one;
  3.  
  4. print "no match" if $one_s ne $two_s;

猜你在找的Perl相关文章