Меня смущает один perl вопрос, у кого-нибудь есть идеи?
I use one hash structure to store the keys and values like:
$hash{1} - > a;
$hash{2} - > b;
$hash{3} - > c;
$hash{4} - > d;
....
more than 1000 lines. I give a name like %hash
а затем я планирую использовать один оператор l oop для поиска всех ключей, чтобы увидеть, будет ли он соответствует значению из файла.
for example, below is the file content:
first line 1
second line 2
nothing
another line 3
my logi c is:
while(read line){
while (($key, $value) = each (%hash))
{
if ($line =~/$key/i){
print "found";
}
}
so my expectation is :
first line 1 - > return found
second line 2 - > return found
nothing
another line 3 - > return found
....
However, during my testing, only first line and second line return found, for 'another line3', the
program does not return 'found'
Note: the hash has more than 1000 records.
Поэтому я пытаюсь отладить его и добавить количество внутри и найти найденные В этом случае l oop выполнялся как 600 или 700 раз, но для случая 'another line3' он выполняется только около 300 раз и просто выходит из l oop и не возвращает найденный.
есть идеи, почему так происходит?
, и я провел еще одно тестирование: если моя структура ha sh мала, например, всего 10 ключей, logi c работает.
и я пытаюсь использовать foreach, и Похоже, что у foreach нет такой проблемы.