Perl三元运算符结合undef使用求助:将空值替换为'Undef.'
解决Perl中三元运算符处理undef的问题
我明白你的需求啦——原来的代码里当哈希的Owner字段未定义时,$name会是空值,现在要改成如果Owner不存在就显示Undef.,否则用Owner的实际值。用Perl的三元运算符完全可以轻松实现,而且代码会很简洁。
直接把所有$name = ...的部分替换成下面这行代码就行:
my $name = defined($emp->{Owner}) ? $emp->{Owner} : 'Undef.';
简单解释一下逻辑:
defined($emp->{Owner})用来判断哈希键Owner是否被定义(也就是有没有有效值)- 如果判断为真(
Owner存在且有值),三元运算符就返回$emp->{Owner},赋值给$name - 如果判断为假(
Owner未定义),就返回字符串'Undef.',赋值给$name
这样替换后,不管原来的elseif逻辑有多复杂,只要涉及$name赋值的地方都换成这行,就能满足你的需求啦。
内容的提问来源于stack exchange,提问作者Jes
相关产品推荐
相关产品推荐

