Let me just say something about pipes. The great UNIX philosophy was: the output of my program should be the input to your program, to compile things together.