0

我是学习perl的新手。我的问题是我如何确保如果没有设置我的,在一段时间之后,我需要发送错误或异常?

while (my ($a, $b) = each %$him) {
    if (($c->{$d}) eq $a) {
        $mine = $b;
    }
}

如果没有设置 $mine ,我必须在这里返回错误。

4

3 回答 3

1

你的整个循环有点奇怪,因为你的循环变量$a$b变量$c$d. 另请注意,您不应使用$aand $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
    }
    ....
}

您也可以使用diewhich 会产生致命错误。

于 2012-12-11T23:41:27.447 回答
1

整个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} };
于 2012-12-11T23:50:45.693 回答
0

可以使用 Perl 的定义函数,如下:

if (!defined($mine)) {
    # produce error here
}
于 2012-12-11T23:41:29.270 回答