引用哈希时连接哈希值

时间:2016-06-01 14:54:33

标签: perl

这是我的代码:

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'

2 个答案:

答案 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

(可在网站http://perldoc.perl.org/perlreftut.html上找到)