在子程序中传递散列

passing hash in subroutines

我制作了一个简单的 perl 脚本,用于通过子例程

打印散列 key/value 对
#!/usr/local/bin/perl

#passing hash to a subroutine

sub printhash{

           my (%hash) = @_;

           foreach my $key (keys %hash){

                    my $value = $hash{$key};

                    print "$key : $value\n ";

          }

}

%hash = {'name' => 'devendra', 'age' => 21};

printhash(%hash);

预期输出:

姓名:devendra

年龄:21

输出:

哈希(0x1be0e78):

有什么问题吗?

这一行

%hash = {'name' => 'devendra', 'age' => 21};

正在尝试将匿名哈希引用分配给哈希。你真正的意思是

%hash = ('name' => 'devendra', 'age' => 21);

如果你有 use strictuse warnings 你会看到消息

Reference found where even-sized list expected

帮助您解决问题。始终使用它们!