在Perl中访问哈希哈希值

jus*_*rld 0 perl hash

我有这个代码:

my %options;

$options{"style"}{size} = "mini";
$options{"style"}{color} = "secondary";
diag("size=".$options{style}{size});
$self->applyStyle(%options);
Run Code Online (Sandbox Code Playgroud)

然后:

sub applyStyle {
  my ($self, $options) = @_;
  diag("size=".$options->{style}{size});
}
Run Code Online (Sandbox Code Playgroud)

但我得到:

Can't use string ("style") as a HASH ref while "strict refs" in use at ...

如何打印(和使用)值?

Chr*_*ner 7

您没有正确传递哈希,因为子例程期望哈希引用,并且您传入的哈希将扩展为键和值列表.这就是为什么它试图使用"style"作为hashref,因为它是它传递的第一个键.

只需更改对此的调用即可.

$self->applyStyle(\%options);
Run Code Online (Sandbox Code Playgroud)