如何取消引用已传递给子例程的Perl哈希引用?

sgs*_*sax 6 perl hash dereference

我还在尝试解决我的哈希解除引用问题.我目前的问题是我现在将hashref传递给sub,我想在该sub中取消引用它.但我找不到正确的方法/语法来做到这一点.在sub中,我想迭代哈希键,但hashref的语法与哈希相同,我知道该怎么做.

所以我想要的是这样做:

sub foo {
    %parms = @_;
    foreach $keys (key %parms) { # do something };
}
Run Code Online (Sandbox Code Playgroud)

但是传入hashref而不是散列.

任何指针(双关语)都是受欢迎的.

谢谢.

cyb*_*nte 3

我目前还没有实际测试代码,但是徒手编写你会想要做这样的事情:

sub foo {
    $parms = shift;
    foreach my $key (keys %$parms) { # do something };
}
Run Code Online (Sandbox Code Playgroud)

  • `shift` 与 `@_` 不相关。`my ($hashref) = @_;` 也同样有效。 (2认同)