$stored_var = retrieve("$batch_text");
%some_hash= %$stored_var;
我认为这是为了检索一些存储的哈希。%$ 表示什么?它只是语法还是有更多的含义?
store \%batch_hash, "$batch_text";
我假设以上内容用于存储哈希。在这里,我也对上面的 \% 有同样的疑问
$stored_var = retrieve("$batch_text");
%some_hash= %$stored_var;
我认为这是为了检索一些存储的哈希。%$ 表示什么?它只是语法还是有更多的含义?
store \%batch_hash, "$batch_text";
我假设以上内容用于存储哈希。在这里,我也对上面的 \% 有同样的疑问
这%$
意味着什么?
$stored_var
是一个哈希引用,%$
用于取消引用它。
store \%batch_hash, "$batch_text";
%batch_hash
是一个散列,\%
用于传递引用,因此在 store 子例程中,您将 batch_hash 散列的引用作为第一个参数传递,将$batch_text
变量作为第二个参数传递。
%$
只是取消引用引用哈希的语法。看看这里。\%
用于引用哈希。store
需要使用 hashref (1. Param) 调用的函数也是如此。
该%some_hash= %$stored_var;
部分是将 hashref 复制到新的 hash。您需要取消引用它,然后才能复制它。
%$foo
正在取消引用$foo
对哈希的引用,所以一行
%bar = %$foo;
是(浅)将标量变量引用的散列的内容复制到另一个散列中,由散列变量更直接地访问。
在某些方面是的,这是“只是语法”,即只是一种取消引用的方式。一个重要的细节是它store
不能retrieve
直接用于序列化哈希或数组,因此您必须使用对它们的引用(在标量值中)。
$foo
如果不是对哈希的引用,则该行将失败。