Come for the quick hacks, stay for the epiphanies. | |
PerlMonks |
comment on |
( [id://3333]=superdoc: print w/replies, xml ) | Need Help?? |
Ok, I think I've solved it. I won't even start on how annoying this is, and how much I wish I'd figured it out sooner. I'm still a little mystified on why it's failing in the original code, though. I have a theory, but I don't know Perl internals well enough to know if it's correct. Basically, it's the part where I grab the filehandle via shift that is blowing up the program. It seems to be tightly associating my lexical loop variable with the filehandle, and then when the variable (and thus the filehandle) go out of scope at the end of the loop, it's trying to cleanup the filehandle (by closeing and waiting on it.
When I replace that with the following:
It works. My theory is that because the underlying container where the filehandle is being stored is an array reference, that when I shift on the (dereferenced) array reference, I'm stomping on the original, even though it's in a for loop and using $_. Does that sound right? Chalk it up to the care needed for references and reference "copies", I suppose. In reply to Re: Select on child output problem
by topher
|
|