默认值为缺少哈希值

use*_*290 4 perl

我在Perl中创建了一个哈希 my %hash = (2 => 'dog', 1 => 'cat');

当我打印$hash{3}它时错误(use of uninitialzed value in print)是预期的.但是,如果不是哈希值,有没有办法默认值?

ike*_*ami 9

my $value = exists($hash{$k}) ? $hash{$k} : 'default';
Run Code Online (Sandbox Code Playgroud)

要实际更改哈希值,请使用

$hash{$k} = 'default' if !exists($hash{k});
Run Code Online (Sandbox Code Playgroud)

如果$hash{$k}始终定义它是否存在,您也可以使用

my $value = defined($hash{$k}) ? $hash{$k} : 'default';
Run Code Online (Sandbox Code Playgroud)

这可以减少到

my $value = $hash{$k} // 'default';   # 5.10+
Run Code Online (Sandbox Code Playgroud)

要实际更改哈希值,请使用

$hash{$k} = 'default' if !defined($hash{k});
Run Code Online (Sandbox Code Playgroud)

要么

$hash{$k} //= 'default';   # 5.10+
Run Code Online (Sandbox Code Playgroud)

如果$hash{$k}存在则总是如此,您也可以使用

my $value = $hash{$k} ? $hash{$k} : 'default';
Run Code Online (Sandbox Code Playgroud)

这可以减少到

my $value = $hash{$k} || 'default';
Run Code Online (Sandbox Code Playgroud)

要实际更改哈希值,请使用

$hash{$k} = 'default' if !$hash{k};
Run Code Online (Sandbox Code Playgroud)

要么

$hash{$k} ||= 'default';
Run Code Online (Sandbox Code Playgroud)