我有一个perl对象(对引用数组的引用),如下所示:
my $a = [ [$a, $ab, $c ], [$a, $b, $c] ] ;
并需要将其存储在数据库中然后检索它。
有人可以建议一种很好的机制来序列化甚至压缩它,然后将其存储在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;
另外,您可以压缩
$bytestream
,例如,通过IO::Compress::Gzip
my $bytestream = gzip nfreeze $data;
关于perl - 在数据库上存储对象并检索它,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9581126/