http://www.perlmonks.org?node_id=339217


in reply to Ingy's "Swiss Army Light Sabre" - or, "how do you design your APIs?"

To be perfectly honest, my first thought when I saw IO::All is that it is a solution in search of a problem. Maybe I'm just missing something, but it seems rather pointless to me, a needless exercise in wheel-reinventing on a grandscale with no benefit. Maybe this is because I'm comfortable with the way Perl does IO already, for the most part, or maybe I just don't think the same way as the guy who did IO::All, but in any case I just don't see the value.

Regarding API design, I agree with EvdB's comment, "Can I remember how to use this after a week and in a hurry without the docs?". My favourite example of a module that gets this pretty-much right, IMO, is DateTime, which I can almost use in my sleep. (There are some modules that are even easier to remember how to use, such as Data::Dumper, but what DateTime does is sufficiently complex that one might expect a more difficult API.


;$;=sub{$/};@;=map{my($a,$b)=($_,$;);$;=sub{$a.$b->()}} split//,".rekcah lreP rehtona tsuJ";$\=$;[-1]->();print