在子程序中传递散列
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 strict
和 use warnings
你会看到消息
Reference found where even-sized list expected
帮助您解决问题。始终使用它们!
我制作了一个简单的 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 strict
和 use warnings
你会看到消息
Reference found where even-sized list expected
帮助您解决问题。始终使用它们!