将多个值添加到现有哈希

-1 perl hash

我有以下哈希,我想为它添加更多的值; 但是,这样做会取代整个哈希值.我很确定这是一个基本的问题,但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已被删除.

Thi*_*Not 6

现有哈希(请注意,在分配给它之前不需要创建空哈希):

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)