私はこのようになり、ネストされたハッシュテーブルを持っています。このデータ構造を持つPerlの「存在する」データ構造体の値を変更できますか?
my %myhash = (
"val1" => {
"A/B.c" => {
"funct1" => 1
}
},
"val2" => {
"C/D.c" => {
"funct2" => 1
}
}
)
私の目的は、特定のハッシュテーブルが存在するかどうかに基づいて異なる値を生成することです。たとえば、
sub mysub
{
my $val = shift;
my $file = shift;
my $funct = shift;
if (exists $myhash{$val}{$file}{$funct}) {
return "return1";
}
if (exists $myhash{$val}{$file}) {
return "return2";
}
return "return3";
}
私が直面している動作は次のとおりです。私は時間のインスタンスを持っています my $ val = "val1"; my $ file = "C/D.c"; my $ funct = "funct3";
この時点では、戻り値は「return2」になります。これらは、Perlデバッガと私の観察です:最初のMYSUBで
- ブレーク==>空白行を返します。はい。続行し、この「if」をスキップします。
- 続行と第二の "if" MYSUBで
- プリントPの$のproxToBugs { "val1と"}、{ "C/D.C"} ==>で破る "(0X ...)HASH" を返します。 WTFの瞬間関数は "return2"を返します。
これは、最初にデータ構造を変更した場合、2番目のifを渡すことができない場合に実行することを示しています。実行している関数は上記の関数と同じです。これはちょうど消毒されています。誰でも私に説明がありますか? :)
確認済み...まだPerlで学ぶことがたくさんあります。このことは30分以上にわたってナッツを運転していました。ありがとう! – danns87