Perl v5.22.1、2.53_01 Storable
、およびIO::Uncompress::Gunzip
2.068 を使用しています。
Storable
中間ファイルを使用せずに、Perl を使用してメモリ内のファイルを gunzip したいと考えています。
$zip_file = '/some/storable.gz'
この圧縮ファイルを指す変数があります。
ファイルに直接 gunzip すると、これは正常に機能し、正しくハッシュ%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
ヘッダーで始まります。壊れているのは整数のようなマルチバイト変数だけのようです。
これは、ファイル バッファへの書き込みが別の方法で機能している間に、ファイルへの書き込みが 1 つの方法で機能するように、バイト順と関係がありますか? 整数を台無しにすることなく、バッファにガンジップするにはどうすればよいですか?