STDERR é automaticamente liberado após a impressão de uma linha, STDOUT não é. O buffer STDOUT é liberado somente se estiver cheio. Para forçar o autoflushing também no uso de STDOUT
STDOUT->autoflush(1);
(Se você tem um perl mais antigo, o que foi mencionado acima pode não funcionar, em vez disso, você tem que usar algo como $| = 1;
)