这是我的代码:
my $hash = shift; // in this hash i have a key 'key' that has the value 'this is a'
$hash{'key'} .= 'string'; //trying to concatenate the two strings
use Data::Dumper;
print Dumper $hash{'key'}; // prints "hash(0x36fc12..) string"
我想得到:
key=>'this is a string'
答案 0 :(得分:3)
始终使用以下!!!
use strict;
use warnings qw( all );
它会指出你的错误。
您修改了哈希%hash
,但没有这样的哈希值!您想要修改$hash
引用的哈希值,因此您需要
use Data::Dumper qw( Dumper );
sub f {
my $hash = shift;
$hash->{key} .= ' string';
}
my %hash = ( key => 'this is a' );
f(\%hash);
print(Dumper(\%hash));
答案 1 :(得分:1)
你可能在子程序中,并且你正在拾取散列参考,而不是散列。你需要像这样取消引用它:
%{$hashref} # dereferenced hashref (just like a hash)
${$hashref}{key} # access your key (just like a hash)
或:
$hashref->{key} # access your key, shorthand style
请注意速记版本中的箭头!
有关详细信息,请查看:
perldoc perlreftut # MJD's references tutorial