我有以下哈希,我想为它添加更多的值; 但是,这样做会取代整个哈希值.我很确定这是一个基本的问题,但perl是一个神秘的谜.
my %myNewHash = ();
%myNewHash = (
lastName => $primaryInfo->{lastName},
firstName => $primaryInfo->{firstName}
);
%myNewHash = (
email => $primaryInfo->{email},
phone => $primaryInfo->{phone}
);
Run Code Online (Sandbox Code Playgroud)
此时,%myNewHash仅包含电子邮件/电话,lastName/firstName已被删除.
现有哈希(请注意,在分配给它之前不需要创建空哈希):
my %myNewHash = (
lastName => $primaryInfo->{lastName},
firstName => $primaryInfo->{firstName}
);
Run Code Online (Sandbox Code Playgroud)
由于您在新旧哈希中使用相同的键:
$myNewHash{$_} = $primaryInfo->{$_} for qw(email phone);
Run Code Online (Sandbox Code Playgroud)
或者使用哈希切片:
my @keys = qw(email phone);
@myNewHash{@keys} = @{ $primaryInfo }{@keys};
Run Code Online (Sandbox Code Playgroud)
密钥(双关语)是指定给单个元素的
$hash{key} = ...
Run Code Online (Sandbox Code Playgroud)
而不是哈希本身
%hash = ( ... );
Run Code Online (Sandbox Code Playgroud)