次のテストデータが入力されたハッシュがあります。
my %non_root_files = ('views/SPYGLASS_HOME/bin/sample_sgdc_file_contents_1.sgdc' => 1,
'views/SPYGLASS_HOME/bin/sample_sgdc_file_contents.sgdc' => 1,
'views/SPYGLASS_HOME/bin/test_2.sgdc' => 1,
'views/SPYGLASS_HOME/bin/test_4.sgdc' => 1,
'views/SPYGLASS_HOME/bin/test_5.sgdc' => 1,
'views/SPYGLASS_HOME/bin/test_6.sgdc' => 1);
別の配列には、次のデータがあります。
my @files = ('views/SPYGLASS_HOME/bin/sample_sgdc_file_contents.sgdc',
'views/SPYGLASS_HOME/bin/test_2.sgdc',
'views/SPYGLASS_HOME/bin/sample_sgdc_file_contents_1.sgdc',
'views/SPYGLASS_HOME/bin/test_5.sgdc',
'views/SPYGLASS_HOME/bin/test_7.sgdc',
'views/SPYGLASS_HOME/bin/sample_sgdc_file_contents_2.sgdc');
私がする必要があるのは、配列の各エントリがハッシュに存在するかどうかを確認し、元の配列から削除することです。そのため、次のようにします。
sub deleteDuplicate{
$originalList_ref = shift;
my $index = 0;
foreach my $element (@{$originalList_ref})
{
if(exists $non_root_files{$element})
{
splice(@{$originalList_ref}, $index, 1);
}
$index++;
}
}
ただし、ハッシュに実際に存在する一部のエントリでは、existsを使用したルックアップが失敗します。要素はハッシュにありますが、条件がfalseを返している場合。誰かがこれの理由とそれを修正する方法を説明できますか?
ありがとう!