我有一个perl对象(对引用数组的引用),如下所示:

my $a = [ [$a, $ab, $c ], [$a, $b, $c] ] ;

并需要将其存储在数据库中然后检索它。

有人可以建议一种很好的机制来序列化甚至压缩它,然后将其存储在DB上吗?然后反序列化并在代码中使用它?

最佳答案

您可以使用任何已知的序列化器,例如JSON::XSStorable
如果要将引用作为引用而不是作为值的副本来检索引用,则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/

10-09 03:47