将散列传递给子例程
passing hashes to subroutine
您好,我是 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);
此代码的输出将是
name : Tom
age : 19
我了解键是如何被解析的,但我无法理解值是如何获得的背后的想法parsed.As我试图理解这一行负责解析的程序流程值。
my $value = $hash{$key};
谁能简单解释一下这是怎么回事?如果我的理解有误,请纠正我。
PrintHash(%hash);
列表上下文中的哈希是包含在哈希中的键值对的列表。您可以编写与以下相同的行:
PrintHash(qw(name Tom age 19));
或
PrintHash('age', '19', 'name', 'Tom');
顺序无关紧要,但会保留对。
然后将该列表分配给 sub
第一行的新散列
my %hash = @_;
您可以从列表(键、值、键、值...)初始化哈希
子例程的其余部分遍历哈希并打印键值对。
foreach my $key ( keys %hash ){
my $value = $hash{$key};
print "$key : $value\n";
}
keys %hash returns %hash 中的键列表(还有 values %hash ),然后要访问存储在哈希中的值,您可以使用 $hash{$key}
您好,我是 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);
此代码的输出将是
name : Tom age : 19
我了解键是如何被解析的,但我无法理解值是如何获得的背后的想法parsed.As我试图理解这一行负责解析的程序流程值。
my $value = $hash{$key};
谁能简单解释一下这是怎么回事?如果我的理解有误,请纠正我。
PrintHash(%hash);
列表上下文中的哈希是包含在哈希中的键值对的列表。您可以编写与以下相同的行:
PrintHash(qw(name Tom age 19));
或
PrintHash('age', '19', 'name', 'Tom');
顺序无关紧要,但会保留对。 然后将该列表分配给 sub
第一行的新散列my %hash = @_;
您可以从列表(键、值、键、值...)初始化哈希
子例程的其余部分遍历哈希并打印键值对。
foreach my $key ( keys %hash ){
my $value = $hash{$key};
print "$key : $value\n";
}
keys %hash returns %hash 中的键列表(还有 values %hash ),然后要访问存储在哈希中的值,您可以使用 $hash{$key}