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

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

store \%batch_hash, "$batch_text";

我假设以上内容用于存储哈希。在这里,我也对上面的 \% 有同样的疑问

4

3 回答 3

1

%$意味着什么?

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

store \%batch_hash, "$batch_text";

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

于 2013-08-21T06:34:13.300 回答
1

%$只是取消引用引用哈希的语法。看看这里\%用于引用哈希。store需要使用 hashref (1. Param) 调用的函数也是如此。

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

于 2013-08-21T06:34:32.723 回答
0

%$foo正在取消引用$foo对哈希的引用,所以一行

%bar = %$foo;

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

在某些方面是的,这是“只是语法”,即只是一种取消引用的方式。一个重要的细节是它store不能retrieve直接用于序列化哈希或数组,因此您必须使用对它们的引用(在标量值中)。

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

于 2013-08-21T06:35:01.273 回答