This may be too simple for your needs, but one way to do this may be to
have the parent do all of the 'ok' printing (e.g. have it wait for the child to die and then examine the exit code).
If the child has fairly simple output you need to check, you can just send it to a temporary file and
have the parent parse it once the child has exitted. I've found that if I design my tests right I don't need anything more complex than this, but YMMV.
Update: I meant to say I've gotten this method to work fine with Test::More.