Without digging into it, my guess is that you're hitting an issue with indirect object syntax. Maybe the syntax you'd like to use just removes too many hints for the compiler to figure out how to feed open properly.
I think in this case, the brevity of your code is really not helping you. What other debugging steps have you taken? Have you tried breaking down your code, eliminating the for loop, etc? Do you know the value of $_-> in your example? (not that that has anything to do with your issue...) Since it's strict complaining, have you tried turning off strict refs to see if anything else goes wrong?