setAssignmentStatus
ハッシュの配列(これ以降はAoH)と別のパラメーター(この部分は機能するので、これについては気にしないでください)を取り、AoHを反復処理して、各ハッシュ要素に別のエントリを設定するsettersubがあります。setter subを介してプルされた後、追加されたエントリで同じAoHオブジェクトを使用し、まったく新しいAoHを構築してエントリを再入力したくないため、何も返されません。セッターは次のとおりです。
sub setAssignmentStatus
{
my $fileFlatArySclr = $_[0];
my $cfgFile = $_[1];
#here I convert the AoH from the scalar necessary for the sub to its native form
my @fileFlatAry = @$fileFlatArySclr;
#this works, don't worry
my %cfgVarHash = getConfigVars($cfgFile);
foreach my $fileVarHashSclr(@fileFlatAry)
{
#convert each AoH entry from scalar necessary for iteration to native hash
my %varHash = %$fileVarHashSclr;
my $varName = $varHash{'VAR_NAME'};
my $asgnLineCnt = $varHash{'ASGN_CNT'};
my $asgnSts;
my $fileAsgnSts;
my $cfgAsgnSts;
if($asgnLineCnt > 0) { $fileAsgnSts = 1; } else { $fileAsgnSts = 0; }
my $cfgAsgnLine = $cfgVarHash{$varName};
if($cfgAsgnLine ne undef) { $cfgAsgnSts = 1; } else { $cfgAsgnSts = 0; }
$asgnSts = $fileAsgnSts.$cfgAsgnSts;
#debug to make sure $asgnSts is not null in the first place (it is not!)
print "\n*** setting ASGN_STUS of ".$varName." to ".$asgnSts;
#Here we set ASGN_STUS for every iteration
$varHash{'ASGN_STUS'} = $asgnSts;
}
}
それは次のように呼ばれます:
setAssignmentStatus(\ @ fileFlatAry、$ cfgFile);
ただし、を@fileFlatAry
介してAoHを送信した後setAssignmentStatus
、各要素ハッシュにはASGN_STUSエントリが含まれません。それはなぜですか、どうすれば修正できますか?
私の疑いは、修飾子で何か問題が発生していることです\
。これにより、データ構造がスカラーパラメーターとしてサブに渡されるようになりますが、よくわかりません。