$stored_var = retrieve("$batch_text");
%some_hash= %$stored_var;
我认为这是用于检索一些存储的哈希值。 %$表示什么?它只是语法还是有更多涉及的含义?
store \%batch_hash, "$batch_text";
我假设上面用于存储哈希。在这里我也有同样的疑问,如上所述\%
答案 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;
是(浅)将标量变量引用的哈希的内容复制到另一个哈希中,更直接地通过哈希变量访问。
在某种程度上,这是“只是语法”,即只是一种解除引用的方式。一个重要的细节是store
和retrieve
不能直接用于序列化哈希或数组,因此您必须使用对它们的引用(以标量值表示)。
如果$foo
不是对哈希的引用,则该行将失败。