in reply to Creating a Complete Wrapper for a Compiled Program

Well, you could open cdparanoia as a pipe:
open(CD,"cdparanoia .... |") || die "could not open pipe to cdparanoia +";
Don't forget to turn off the buffering on the filehandle.