smi*_*ith 5 perl serialization
我有一个perl对象(引用数组引用),如下所示:
my $a = [ [$a, $ab, $c ], [$a, $b, $c] ] ;
Run Code Online (Sandbox Code Playgroud)
并需要将其存储在DB上然后检索它.
有人建议一个好的机制来序列化甚至压缩它,然后将其存储在数据库中?然后反序列化它并在代码中使用它?
您可以使用任何已知的序列化程序,例如JSON :: XS或Storable.
Storable
如果要将引用检索为引用,而不是作为值的副本,则更好.然后将序列化对象保存在满足存储要求的任何类型(VARCHAR,BLOB,...)字段中.
use Storable qw(nfreeze thaw);
use DBI;
# ... connect to database
# Store
my $data = [ [$a, $b, $c ], [ $a, $b, $c ] ];
my $bytestream = nfreeze $data;
$dbh->do('insert into table (field) values(?)', undef, $bytestream);
# Retrieve
$bytestream = $dbh->selectrow_array('select field from table where ...');
$data = thaw $bytestream;
Run Code Online (Sandbox Code Playgroud)
此外,您可以压缩$bytestream
,例如,通过IO::Compress::Gzip
my $bytestream = gzip nfreeze $data;
Run Code Online (Sandbox Code Playgroud)