Eri*_*sum 3 perl hash pointers function
主功能:
my %hash = {'inner1'=>{'foo'=>5},
'inner2'=>{'bar'=>6}};
$object->State(0, %AMSValues);
Run Code Online (Sandbox Code Playgroud)
寄去:
sub State
{
my ($self, $state, %values) = @_;
my $value = \%values;
Run Code Online (Sandbox Code Playgroud)
据我所知,一个应该是哈希,另一个是指针,但......

它看起来不像是这样的,
$value = $value->{"HASH(0x52e0b6c)"}
%values = $values->{"HASH(0x52e0b6c)"}
Run Code Online (Sandbox Code Playgroud)
yst*_*sth 13
use warnings; 总是.
您的:
my %hash = {'inner1'=>{'foo'=>5},
'inner2'=>{'bar'=>6}};
Run Code Online (Sandbox Code Playgroud)
是不正确的; {}生成匿名哈希引用,%哈希获取单个键(该哈希引用已字符串化)和值undef.
你自找的:
my %hash = ('inner1'=>{'foo'=>5},
'inner2'=>{'bar'=>6});
Run Code Online (Sandbox Code Playgroud)
至于传递子程序,你不能通过哈希; 像你这样的代码展示将哈希扁平化为一个列表,然后重新组合哈希@_,但这将是一个单独的副本.如果您确实需要相同的哈希,则必须传递哈希引用.