Yes, I strongly suspect that Expect could be made to do the job, but it's a very inelegant way of getting it done, seeing as I don't plan on piping any input into the command or parsing the output or anything of the sort that Expect does. I really just want to do system("somecmd"), and no more functionality than that - except I need to convince somecmd that it is talking to a tty (which it isn't).
It seems Expect is using a similar approach (IO::Pty), and I'm sure my solution lies within the Expect.pm source code, I just don't see it yet :)