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


in reply to Re: Draft - Writng pluggable programs with perl.
in thread Draft - Writng plugable programs with perl.

Yes, good points. except for the 'can' thing. I usually assume (especially for a tutorial) that nobody is trying to fool me. If someone did repplace can(), he must know what he's doing.

I'll fix the explanation about require.


perl -e'$b=unpack"b*",pack"H*","59dfce2d6b1664d3b26cd9969503";\ for(;$a<length$b;$a+=9){print+pack"b8",substr$b,$a,8;}'
My public key

Replies are listed 'Best First'.
Re^3: Draft - Writng pluggable programs with perl.
by chromatic (Archbishop) on Jun 13, 2004 at 18:36 UTC
    If someone did repplace can(), he must know what he's doing.

    Yes, but your code won't let him do it. If I'd written a plugin with a custom can(), to make it work with your program, I'd have to override UNIVERSAL::can()! Putting specific code to make a subclass work in a superclass (let alone the ultimate superclass) is bad design.

    I understand that your code tries to ensure that everything in @plugins actually represents a valid invocant. That's well-worth doing, but I think you're forcing behavior of the plugins beyond the minimum you need to do what you're doing.

    You've created a plugin system because you don't know what people will need to do to solve problems in the future. Don't enforce too many restrictions on how they'll solve those problems!