IPC::Open3 : Why can't I catch program output here?

I try to use the program below to catch standard output and standard error of a process. The program itself runs well, and it *does* write at least to standard output, but in the code below, the line saying "### READING" is never printed and @msg is still empty afterwards. This means that $selector->can_read() must have returned false already the first time