我是学习perl的新手。我的问题是我如何确保如果没有设置我的,在一段时间之后,我需要发送错误或异常?
while (my ($a, $b) = each %$him) {
if (($c->{$d}) eq $a) {
$mine = $b;
}
}
如果没有设置 $mine ,我必须在这里返回错误。
我是学习perl的新手。我的问题是我如何确保如果没有设置我的,在一段时间之后,我需要发送错误或异常?
while (my ($a, $b) = each %$him) {
if (($c->{$d}) eq $a) {
$mine = $b;
}
}
如果没有设置 $mine ,我必须在这里返回错误。
你的整个循环有点奇怪,因为你的循环变量$a
和$b
变量$c
或$d
. 另请注意,您不应使用$a
and $b
,因为它们是为sort
函数保留的。因此,正如ikegami所说,您的循环完全是多余的,除非您打错字并$b
表示$d
.
假设$c->{$b}
是“矿井”,“未设置”表示“未定义”:
while (my ($a, $b) = each %$him) {
unless (defined $c->{$b}) { # the value for this key is undefined
warn "Undefined mine!"; # produce warning message
next; # skip to next loop iteration
}
....
}
您也可以使用die
which 会产生致命错误。
整个while
循环是不必要的。您只需
die if !exists($him->{ $c->{$d} });
my $mine = $him->{ $c->{$d} };
你可能更喜欢
# If doesn't exist or isn't defined
die if !defined($him->{ $c->{$d} });
my $mine = $him->{ $c->{$d} };
或者
# If doesn't exist, isn't defined, or is false.
die if !defined($him->{ $c->{$d} });
my $mine = $him->{ $c->{$d} };
可以使用 Perl 的定义函数,如下:
if (!defined($mine)) {
# produce error here
}