我试图解冻在64位Solaris(生产)计算机上使用Storable冻结的数据库BLOB。当我尝试在32位Windows(开发)PC上解冻时,收到“字节顺序不兼容错误”。
perl -v (on solaris)
This is perl, v5.8.8 built for i86pc-solaris-64
perl -v (on Windows)
This is perl, v5.10.1 built for MSWin32-x86-multi-thread
确切的错误是:
(Unable to read: Byte order is not compatible at blib\lib\Storable.pm (autosplit into blib\lib\auto\Storable\thaw.al) line 415, at ../handlers/Search/actions/SearchSendQueue.pm line 124 )
SearchSendQueue.pm的第124行:
my $object = thaw( $item->{object} );
有人知道我如何在32位计算机上解冻该对象吗?
注意:该对象有效,并且可以在64位生产计算机上运行。
我已经尝试过“ $ Storable :: interwork_56_64bit = 1;”如其他论坛所建议。
最佳答案
Storable文档说:
Storable会写一个文件头,其中包含构建Storable的C编译器的各种C语言类型的大小(当未按网络顺序编写时),并且将拒绝加载由Storable不在同一(或兼容)体系结构上编写的文件。
在同一部分中,他们建议Storable的基本用法是本地和FAST持久性方法。但是,您可以使用nstore
以网络字节顺序存储持久性结构。结果是它读取和存储速度较慢,但可在所有平台上使用。
因此建议您必须使用64位计算机使用nstore
以网络顺序读取和重新存储数据。