关于Perl中的存储和检索

时间:2013-08-21 06:25:48

标签: perl hash reference perl-data-structures

$stored_var = retrieve("$batch_text");
%some_hash= %$stored_var;

我认为这是用于检索一些存储的哈希值。 %$表示什么?它只是语法还是有更多涉及的含义?

store \%batch_hash, "$batch_text";

我假设上面用于存储哈希。在这里我也有同样的疑问,如上所述\%

3 个答案:

答案 0 :(得分:1)

%$表示什么?

$stored_var是一个哈希引用,%$用于取消引用它。

store \%batch_hash, "$batch_text";

%batch_hash是一个哈希值,\%用于传递引用,因此在store子例程中,您将batch_hash哈希的引用作为第一个参数传递,并将$batch_text变量作为第二个参数传递。

答案 1 :(得分:1)

%$只是解除引用引用哈希的语法。 看看here\%用于引用哈希。所以store是一个需要用hashref(1.Param)调用的函数。

%some_hash= %$stored_var;部分是将hashref复制到新的哈希。您需要取消引用它然后才能复制它。

答案 2 :(得分:0)

%$foo将引用$foo取消引用到哈希,所以一行

%bar = %$foo;

是(浅)将标量变量引用的哈希的内容复制到另一个哈希中,更直接地通过哈希变量访问。

在某种程度上,这是“只是语法”,即只是一种解除引用的方式。一个重要的细节是storeretrieve不能直接用于序列化哈希或数组,因此您必须使用对它们的引用(以标量值表示)。

如果$foo不是对哈希的引用,则该行将失败。