嗨,我是perl编程新手。我无法获得此代码段。
#!/usr/bin/perl
# Function definition
sub PrintHash{
my (%hash) = @_;
foreach my $key ( keys %hash ){
my $value = $hash{$key};
print "$key : $value\n";
}
}
%hash = ('name' => 'Tom', 'age' => 19);
# Function call with hash parameter
PrintHash(%hash);
此代码的输出将是
名字:汤姆 年龄:19岁
我理解了如何解析密钥,但我无法理解这些值如何被解析。当我试图理解程序的流程时,这一行负责解析值。
my $value = $hash{$key};
有人可以简要解释一下发生了什么吗?如果我的理解是错误的,请纠正我。
答案 0 :(得分:5)
PrintHash(%hash);
列表上下文中的哈希是哈希中包含的键值对的列表。您可以写相同的行:
PrintHash(qw(name Tom age 19));
或
PrintHash('age', '19', 'name', 'Tom');
顺序无关紧要,但保留了对。 然后将该列表分配给子
第一行的新哈希my %hash = @_;
您可以从列表(键,值,键,值,...)
初始化哈希子例程的其余部分遍历哈希并打印键值对。
foreach my $key ( keys %hash ){
my $value = $hash{$key};
print "$key : $value\n";
}
keys%hash 返回%hash中的键列表(还有 values%hash ),然后访问存储在您使用的哈希中的值 $散列{$键} 强>