perl的gunzip把緩衝和gunzip把文件中有不同的字節順序
我使用Perl v5.22.1,Storable
2.53_01和IO::Uncompress::Gunzip
2.068。
我想使用Perl來在內存中gunzip一個Storable
文件,而不使用中間文件。
我有一個變量$zip_file = '/some/storable.gz'
指向這個壓縮文件。
如果我直接gunzip到一個文件,這工作正常,並且%root
正確設置爲Storable
散列。
gunzip($zip_file, '/home/myusername/Programming/unzipped');
my %root = %{retrieve('/home/myusername/Programming/unzipped')};
但是,如果我用gunzip到內存中是這樣的:
my $file;
gunzip($zip_file, \$file);
my %root = %{thaw($file)};
我得到的錯誤
Storable binary image v56.115 more recent than I am (v2.10)`
所以可存儲的幻數已屠殺:它永不那麼高。
但是,解壓縮緩衝區中的字符串仍然正確;緩衝區以pst
開頭,這是正確的Storable
標題。它似乎只是像正在被破壞的整數那樣的多字節變量。
這是否與字節排序有關,例如在寫入文件緩衝區時寫入文件的方式是一種方式,而在另一種方式中寫入文件緩衝區的方式是?如何在不破壞我的整數的情況下將gunzip緩衝到緩衝區?
優秀答案 – Borodin
這是對的!不幸的是,我沒有創建可存儲的文件,所以我無法選擇使用凍結而不是存儲。然而,我發現通過將$ file轉換爲文件句柄,可以檢索'store'存儲在內存中:'open my $ fake_fh,「<」,\ $ file;'然後使用'fd_retrieve($ fake_fh);' – Miguel