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