小编ple*_*fee的帖子

Hashref 赋值消耗下一个键而不是赋值 undef

我正在尝试初始化一个包含多个表达式结果的 hashref。我希望返回未定义结果的表达式将 undef 分配给适当的键。相反,赋值只是吞噬了下一个键,就好像表达式从不存在一样。

一个简单的例子可能更容易理解:

use Data::Dumper;
my $str = "vs";
my $contains = {
    t => ($str =~ /t/i),
    u => ($str =~ /u/i),
    v => ($str =~ /v/i),
};
print(Data::Dumper->Dump([$contains]));
Run Code Online (Sandbox Code Playgroud)

我希望上面的代码打印:

$VAR1 = {
    'v' => 1,
    't' => undef,
    'u' => undef
};

Run Code Online (Sandbox Code Playgroud)

相反,我得到以下信息:

$VAR1 = {
    't' => 'u',
    'v' => 1
};

Run Code Online (Sandbox Code Playgroud)

在赋值中添加一个明确的 undef 确实让我得到了我正在寻找的结果:

$VAR1 = {
    'v' => 1,
    't' => undef,
    'u' => undef
};

Run Code Online (Sandbox Code Playgroud)

然而,这对我来说似乎有点违反直觉。有人可以解释这种行为吗?

perl hash variable-assignment hashref

1
推荐指数
1
解决办法
60
查看次数

标签 统计

hash ×1

hashref ×1

perl ×1

variable-assignment ×1