IPC::Open3 is another alternative to capturing both the stdout and stderr, goggle for many previously posted examples. You might be running into one of those peculiar programs that demand to output to a /dev/tty for stdout. In that case you may need to use IO::Pty, or Expect.