gpt4 book ai didi

Perl - 哈希和 => 运算符

转载 作者:行者123 更新时间:2023-12-03 18:22:29 27 4
gpt4 key购买 nike

所以我在学习 Perl 并进入了关于哈希的章节。我知道 '=>' 运算符是逗号运算符的别名。但是当我尝试创建一个值 undef 我收到警告
在 ./learning.pl 第 18 行的连接 (.) 或字符串中使用未初始化的值 $last_name{"dino"}。

use warnings;
use strict;

my %last_name = (
fred => 'flintston',
dino => undef,
barney => 'rubble',
betty => 'rubble',
);

my $key;
my $value;

if(%last_name) {
foreach $key (sort keys %last_name) {
print("$key => $last_name{$key}\n");
}
}

但是当我将哈希行更改为:
my %last_name = (
fred => 'flintston',
dino => undef =>
barney => 'rubble',
betty => 'rubble',
);

它工作得很好,并将值返回为 undef。我所做的只是用“=>”运算符替换分隔键/值的逗号运算符。

如果两个运算符应该相同,为什么后者有效,而前者无效?

最佳答案

它们并不完全相同。 “胖逗号”还做一件事:当它是一个裸字时,它引用左侧的操作数。所以,

undef, 1

相当于
undef(), 1

尽管
undef => 1

相当于
'undef', 1

perlop :

The => operator is a synonym for the comma except that it causes a word on its left to be interpreted as a string if it begins with a letter or underscore and is composed only of letters, digits and underscores.

关于Perl - 哈希和 => 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30926642/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com