Perl のハッシュにキーが存在するかどうかを確認するにはどうすればよいですか?[重複]
質問
この質問にはすでに答えがあります:
ifパラメータを確認したい $PGkey
は、ハッシュ テーブル内の同じ名前のキーと同等です。さらに、できるだけこれに近い形式で実行したいと考えています。
while(<PARAdef>) {
my($PGkey, $PGval) = split /\s+=\s+/;
if($PGkey == $hash{$PGkey}) {
print PARAnew "$PGkey = $hash{$PGkey}->[$id]\n";
} else {
print PARAnew "$PGkey = $PGval\n";
}
}
簡単な方法はありますか?
解決
あなたはその中で共通のコードをくくり出すことができますの条件演算子を使用して/ else文の場合:
while ( <PARAdef> ) {
chomp;
my ($PGkey, $PGval) = split /\s+=\s+/;
print "$PGkey = ",
$PGval eq $hash{$PGkey}[$id] ? $hash{$PGkey}[$id] : $PGval, "\n";
}
それとも、ただ問題を虚偽表示し、本当に$ハッシュ{$ PGkey}が存在し、$ PGvalにフォールバックならば、それは、あなたが言うことができていない場合は$ハッシュ{$ PGkey} [$のID]を使用したい場合は
while ( <PARAdef> ) {
chomp;
my ($PGkey, $PGval) = split /\s+=\s+/;
print "$PGkey = ",
$PGkey ne "def" and exists $hash{$PGkey} ?
$hash{$PGkey}[$id] : $PGval, "\n";
}
簡単なメモ、古い裸の単語スタイルのファイルハンドルを使用しているように見えます。
:新しい(10歳が新しい考えることができる場合)字句ファイルハンドルは、あらゆる方法で優れていますopen my $PARAdef, "<", $filename
or die "could not open $filename: $!";
他のヒント
ハッシュキーの存在をチェックする方法があります:
exists $hash{$key}
所属していません StackOverflow