Thank you very much for the answer, it fixed the problem. I would say it's a quite unexpected behaviour (at least by me), because when I dump \@say, it prints out the expected results (different for each animal), and when I initialised @say by @ say = () in the beginning of the loop, it gives also the bad results ("cat"=>
).
Thanks again! :D