不能使用字符串作为HASH参考,而严格参考"在perl中更新哈希键时?

时间:2018-06-01 14:45:59

标签: perl hash

我试图用:

更新子返回的哈希值
sub foo {
    my ($self, $arg) = @_;
    my $results = $self->SUPER::foo($arg);
    $results->{uri} .= 'hey'; # I want to append 'hey' to the value of the already defined 'uri'
    return $results;
}

但我得到了:

Can't use string ("hey") as a HASH ref while "strict refs"

我知道这是一个常见的错误,但我无法理解为什么会发生这种错误。

1 个答案:

答案 0 :(得分:0)

如果调用$results之后$self->SUPER::foo($arg);的内容是字符串文字'hey'而不是HASHREF,那么您将从Perl获取此内容 - 就像您要执行此操作一样以下内容:

my $results = 'hey'
$results->{uri} .= 'hey';