在Perl中连接2个哈希时,我得到一个额外的元素"undef"

gda*_*nko 1 perl hash

我有两个哈希,当我加入它们时,我得到一个额外的元素,"undef".为什么?

#!/usr/bin/perl
use Data::Dumper;

my %foo = (
    "disable-notify",
    "start=s",
    "end=s"
);

test();

sub test() {
    my %bar = (
    "notify-disabled",
    "durtion=s",
    "help",
    "my-stuff"
);

my %poop = (%foo, %bar);
print Dumper(%poop);
}
Run Code Online (Sandbox Code Playgroud)

运行代码给了我:

$VAR1 = 'notify-disabled';
$VAR2 = 'durtion=s';
$VAR3 = 'help';
$VAR4 = 'my-stuff';
$VAR5 = 'disable-notify';
$VAR6 = 'start=s';
$VAR7 = 'end=s';
$VAR8 = undef;
Run Code Online (Sandbox Code Playgroud)

这个undef来自哪里?

小智 5

好吧,首先,你的哈希语法有点不稳定.如果你用大箭头表示法,它会更明显:

my %foo = (
    "disable-notify" => "start=s",
    "end=s"
);
Run Code Online (Sandbox Code Playgroud)

my %bar = (
    "notify-disabled" => "durtion=s",
    "help" => "my-stuff"
);
Run Code Online (Sandbox Code Playgroud)

因此,您有一个非偶数的键值对,因此"end = s"被指定为未定义值的键.简而言之,你做得不对.