With regards IO::All - I hadn't read the POD until your comment. It sounds like a good idea, so why would you hesitate to recommend it as a unified interface? (other than the fact that Ingy says that he may break backwards compatibility in the future)?