Subscripted variables instead of arrays in conjunction with twice as many IO calls as necessary is so far winning over my answer to the question “In Perl, how can I read from multiple filehandles in one loop?” Don’t get me wrong, @TLP’s answer is not horrible, but I really think:
until (grep !defined, my @lines = map scalar <$_>, @fh) {
which reads nicely in English as “until at least one of the lines read from the filehandles in @fh
is not defined” is clear, concise, and efficient.