Bạn có thể sử dụng bất kỳ trình tuần tự đã biết nào, ví dụ: JSON::XS hoặc Storable. Storable
sẽ tốt hơn nếu bạn muốn truy xuất tham chiếu dưới dạng tham chiếu chứ không phải dưới dạng bản sao của giá trị. Sau đó lưu một đối tượng được tuần tự hóa trong trường của bất kỳ loại nào (VARCHAR, BLOB, ...) thỏa mãn các yêu cầu lưu trữ.
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;
Ngoài ra, bạn có thể nén $bytestream
, ví dụ, thông qua IO::Compress::Gzip
my $bytestream = gzip nfreeze $data;
Tôi đã thử nó nhưng tôi nhận được các lỗi dưới đây: Không thể gọi phương thức "nfreeze" trên tài liệu tham khảo unblessed – smith
Bạn có phương pháp nhập 'nfreeze'? Làm 'sử dụng qw đáng tin cậy (nfreeze)' hoặc viết tên đầy đủ của phương thức: 'Storable :: nfreeze ($ data)'. – Ali
bạn có quyền cảm ơn, cũng là mô-đun giải nén gzip là gì? – smith