Ian Malpass ian at
Mon Apr 28 17:41:01 BST 2008

OK, this may be (a) a bad idea, (b) a crack-fuelled idea, (c) already 
done, or (d) all of the above. But, hey, it might be (e) none of the 
above :)

I want to inherit from a base class, but I want to not inherit methods 
foo() and bar(). I could over-ride these with methods that die(), but 
can() would still see them.

Question the First: Is there a way to do this sort of thing already?

Question the Second: If there isn't, how about this approach?

   * Over-ride can(), which checks to see if the method is in the 
"cannot" list.
     * If it isn't, call SUPER::can().
     * If it is, return undef.
   * Create methods for the "cannot" list that just die with 'Can't 
locate method "$method" via package "$package"'.

I'm somewhat wary of mucking with can()....

Question the Third: If that seems like it'd work (and it seems to from 
my simple test) does "Class::Method::Cannot" seem like a reasonable 
thing to put up on CPAN?


More information about the mailing list