0

私はperlを学んでいる初心者です。私が持っている質問は、鉱山が設定されていない場合、しばらくしてエラーまたは例外を送信する必要があることを確認するにはどうすればよいですか?

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

$mine が設定されていない場合、ここでエラーを返す必要があります。

4

3 に答える 3

1

$aループ変数とは変数orと$bは関係がないため、ループ全体がやや奇妙です。andは関数用に予約されているため、使用しないでください。したがって、池上が言うように、タイプミスをして代わりに意味しない限り、ループは完全に冗長です。$c$d$a$bsort$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 を使用することもできます。

于 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 に答える