问题标签 [storable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
388 浏览

perl - 使用可存储检索从文件中检索数组或字符串的基本问题

问题很简单,但我似乎找不到:

我将 a 存储$string到 a $filename

store [$tempstring], $filename2[$m];

然后我尝试检索它:

my $tempinput = retrieve ($filename2[$m]);

我相信我只是得到参考,而不是字符串?我可以使用命令将数据转换回原始字符串吗?

0 投票
1 回答
1044 浏览

perl - 我收到“CGI 错误:文件不是 perl 可存储”错误

我的 perl 突然出现了一个问题,并且无缘无故地开始向我抛出这个异常:

CGI 错误:文件不是可存储在 blib\lib\Storable.pm 的 perl(自动拆分为 blib\lib\auto\Storable_retrieve.al)第 380 行,位于 C:/myapp/src/main/perl/lib/Output.pm第 1831 行

有谁知道“文件不是可存储在 blib\lib\Storable.pm 中的 perl”是什么以及如何解决这个问题?

谢谢,去

0 投票
2 回答
239 浏览

perl - Why will Storable load some classes, but not others?

I'm having a problem with frozen objects in Storable. When Storable thaws an object, it's supposed to load the class. This is usually true, but sometimes it isn't. Here's some sample code...

And the quite simple Foo.pm.

I get from that program...

As you can see, it will happily load DateTime but not my Foo module. The object is restored, but Foo.pm is not loaded. I have this problem with Storable 2.34 and perl 5.16.2.

Can people repeat this problem? Is there a solution?

0 投票
0 回答
476 浏览

perl - Perl Storable 检索 Moose 对象数组

我尝试将 Moose 对象数组存储到 YAML 或 JSON。

保存效果很好,但是当我尝试恢复我的对象时,它们是空的:

这是我的代码:

注意.pm:

testNote.pl:

希望有人可以提供帮助:)

0 投票
3 回答
604 浏览

haskell - 在可存储和拆箱之间转换

由于这个问题的答案,我希望能够从 Data.Vector.Unboxed.Unbox 的实例构造Foreign.Storable.Storable实例(反之亦然)。这可能吗?

我知道的最接近的是vector-th-unbox,但这只会创建一个不可装箱的实例。

0 投票
1 回答
600 浏览

multithreading - Perl:正确使用 Storable 和 Thread::Queue

我正在尝试使用 Storable 来帮助收集由多个线程生成的数据。没有线程部分,可存储的代码位运行良好。但是,使用我提供的示例代码,我收到以下错误:

thread failed to start: Invalid value for shared scalar at ./storable2.pl line 55.

第 55 行是$hash{"Simpsons"}{"Krusty"} = \%test2_hash;

@ikegami 在较早的帖子中告诉我,错误是由于我的引用指向一个非共享变量而引起的。我尝试与代码共享变量my %test2_hash : shared;(这是示例代码的一部分),但我想我使用不正确。

我还尝试创建一个共享的新哈希:

但是,这会导致相同的错误。

这是我的示例代码:

与 Thread::Queue 一起实现时使用 Storable 的正确方法是什么?还是问题纯粹与不正确的 Thread::Queue 实现有关?

抱歉@ikegami :( 我真的尝试过使用我拥有的工具,但我又碰壁了。

更新:我更新了代码。使用严格和警告我得到以下输出:

第 52 行是%test2_hash = %{retrieve($tmp_filename)};

0 投票
2 回答
598 浏览

perl - Perl:将序列化的哈希通过管道传输到分叉的进程

我不知道我的代码有什么问题。我正在尝试序列化父级内部的哈希并将其通过管道传输到应该反序列化的叉子。

...产生以下错误:

管道有问题吗?似乎thaw不会反序列化检索到的标量值。也许检索到的标量值不正确。

我试图在没有分叉或管道的情况下做一些半成品,并且它的工作原理:

没有太大的逻辑差异,他?如果有人能向我解释更多这种行为,那就太好了。

0 投票
1 回答
216 浏览

perl - 我们可以在绑定哈希上使用 Storable 的存储方法吗?

尝试将哈希引用存储在可存储文件中,并且效果很好。但是,我还需要按排序顺序保存键 - 所以我使用了以下

tie %$hashref, 'Tie::IxHash'; store $hashref, $filename;

但这不起作用 - 文件被创建但它只有 50 个字节大小,当我使用检索()时,我得到一个空哈希。

我尝试使用 Tie::IxHash::Easy (因为我的哈希是哈希的哈希)但无济于事。有什么帮助吗?

0 投票
2 回答
118 浏览

perl - Where do I put objects frozen with Storable to use them as mock input in a unit test in Perl?

I am writing a unit test where I need to mock a function that is returning a Class::Std::Storable object. There is no normal way to serialize these using Data::Dumper and such. Instead, I can do it as follows:

So in my unit test, I will need to mock the function to return that stored object, maybe like this:

That much is pretty clear. What's causing me pain is how to keep that serialized object. It very much looks like binary, so I can't just put it in the __DATA__ section like I would with SQL for a temporary in-memory sqlite db or some other data that might get put into objects. I could put it into a file and store that with my test, but is that a good idea?

So where do I put that frozen serialized object?


So Google may index this question for the future: This is in fact about SOAP::WSDL and Class::Std::Fast::Storable.

0 投票
1 回答
51 浏览

perl - 为什么 Test::MockObject 使我的对象解冻会引发警告?

这需要一些解释才能开始。我有一个单元测试,我使用Storable保存来自SOAP::WSDL的Class::Std::Fast::Storable对象。我存储的对象是 web 服务调用的结果。它最终用MIME::Base64编码并写入文件的某个位置。这很好用。

在构建单元测试时,我需要使用Test::MockObject来模拟对 web 服务的调用,从而返回恢复的对象。但不知何故,这引发了一堆关于在 hash element 中使用未初始化值的警告。

我尝试重新创建它作为一个小例子。第一段代码是我如何获得示例的 base64 输出。我们将在一分钟内使用它。

所以我们得到了三行base64。让我们尝试恢复它们:

整洁的。有用!

现在让我们添加 Test::MockObject。

好吧,这很奇怪。它可以工作,但会引发错误。

所以我查看了 anySimpleType.pm 的第 53 行,它说:

唔。$_[0]是未定义的。看起来像是new在没有参数的情况下被调用。

但是加载 Test::MockObject 到底是怎么做到的呢?或者也许这个警告总是弹出,但不知何故以前没有显示?我对其进行了一点调试,结果发现无论我加载了什么,Komodo IDE 调试器中总是显示警告。

但是,如果我也加载了 Test::MockObject,它只会显示在正常的程序输出中。谁能给我解释一下?