我正在使用 Perl v5.22.1、2.53_01Storable
和IO::Uncompress::Gunzip
2.068。
我想使用 PerlStorable
在内存中压缩文件,而不使用中间文件。
我有一个$zip_file = '/some/storable.gz'
指向这个压缩文件的变量。
如果我直接压缩到一个文件,这工作正常,并且%root
正确设置为Storable
哈希。
gunzip($zip_file, '/home/myusername/Programming/unzipped');
my %root = %{retrieve('/home/myusername/Programming/unzipped')};
但是,如果我像这样压缩到内存中:
my $file;
gunzip($zip_file, \$file);
my %root = %{thaw($file)};
我得到错误
Storable binary image v56.115 more recent than I am (v2.10)`
所以 Storable 的神奇数字已经被扼杀:它永远不应该那么高。
但是,解压缩缓冲区中的字符串仍然是正确的;缓冲区以pst
正确的Storable
标头开头。它似乎只是被破坏的整数之类的多字节变量。
这是否与字节顺序有关,例如写入文件以一种方式工作,而写入文件缓冲区则以另一种方式工作?如何在不破坏整数的情况下将其压缩到缓冲区?