我有一个哈希值,用下面的测试数据填充:无法访问元素在一个Perl哈希
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++;
}
}
但是,对于实际存在于散列中的某些条目,存在的查找失败。元素存在于散列中,但条件是返回false。任何人都可以请解释这个原因以及如何纠正它?
谢谢!
如果该键在散存在的查找是不是失败。我建议添加一些打印语句,以便实际看到发生了什么并调试您的代码。我会怀疑真正的问题是你在迭代它时修改你的数组,然后'$ index'不再正确。 – 2012-04-27 18:02:25
什么是@files for?我没有看到它在你的代码中使用。 – Flimzy 2013-11-16 12:20:21