unless (open F, "-|") { open STDERR, ">&=1"; select(STDIN); $| = 1; select(STDERR); # also tried select(F) here $| = 1; exec "$command"; } while () { $buffer .= $_; $cache->set($session, [0, $buffer]); }