I recently had a similar problem. The error is in your comparison ($i eq $list). Then the loop gets to the point that you are expecting a "Yes", the values of your variables are
$i="harv"
$list="harv\n"
I solved my problem by changing $i to include the carriage return. You could also solve this problem by using pattern matching rather than a straight comparison, or by chopping off the last character of the input lines.
Comment on Re: What is the error in my script or file setup?
It looked like he was chomping in his code. He was chomping the list as he added each element to the array. That should take care of the carriage return that you are referring to.