Perl 哈希:$hash{key} 与 $hash->{key}
Perl Hashes: $hash{key} vs $hash->{key}
这里是 Perl 新手,很抱歉问了一个愚蠢的问题,但是谷歌搜索 ->
编码上下文很难......有时,我会访问这样的哈希:$hash{key}
有时却不会' 工作,所以我像这样访问它 $hash->{key}
。这里发生了什么?为什么它有时以一种方式工作而不是另一种方式?
不同的是,第一种情况下%hash
是一个hash,而第二种情况下,$hash
是对hash的引用(=hash reference),因此需要不同的表示法.在第二种情况下 ->
取消引用 $hash
.
示例:
# %hash is a hash:
my %hash = ( key1 => 'val1', key2 => 'val2');
# Print 'val1' (hash value for key 'key1'):
print $hash{key1};
# $hash_ref is a reference to a hash:
my $hash_ref = \%hash;
# Print 'val1' (hash value for key 'key1', where the hash
# in pointed to by the reference $hash_ref):
print $hash_ref->{key1};
# A copy of %hash, made using dereferencing:
my %hash2 = %{$hash_ref}
# $hash_ref is an anonymous hash (no need for %hash).
# Note the { curly braces } :
my $hash_ref = { key1 => 'val1', key2 => 'val2' };
# Access the value of anonymous hash similarly to the above $hash_ref:
# Print 'val1':
print $hash_ref->{key1};
另请参见:
perlreftut: https://perldoc.perl.org/perlreftut.html
这里是 Perl 新手,很抱歉问了一个愚蠢的问题,但是谷歌搜索 ->
编码上下文很难......有时,我会访问这样的哈希:$hash{key}
有时却不会' 工作,所以我像这样访问它 $hash->{key}
。这里发生了什么?为什么它有时以一种方式工作而不是另一种方式?
不同的是,第一种情况下%hash
是一个hash,而第二种情况下,$hash
是对hash的引用(=hash reference),因此需要不同的表示法.在第二种情况下 ->
取消引用 $hash
.
示例:
# %hash is a hash:
my %hash = ( key1 => 'val1', key2 => 'val2');
# Print 'val1' (hash value for key 'key1'):
print $hash{key1};
# $hash_ref is a reference to a hash:
my $hash_ref = \%hash;
# Print 'val1' (hash value for key 'key1', where the hash
# in pointed to by the reference $hash_ref):
print $hash_ref->{key1};
# A copy of %hash, made using dereferencing:
my %hash2 = %{$hash_ref}
# $hash_ref is an anonymous hash (no need for %hash).
# Note the { curly braces } :
my $hash_ref = { key1 => 'val1', key2 => 'val2' };
# Access the value of anonymous hash similarly to the above $hash_ref:
# Print 'val1':
print $hash_ref->{key1};
另请参见:
perlreftut: https://perldoc.perl.org/perlreftut.html