perlmeditation liz I like Bart's [id://315683] idea for an <code></code> so much, that I worked a bit more on it. The only thing I have against it, is that you would need to say "use isa qw(Bar)". It should be possible to do this shorter. Something like: <code> require isa; # this should go away once this is in the core package Foo; isa Bar; </code> I came up with the following (temporary) implementation: <code> package isa; use strict; use warnings; BEGIN { no warnings 'redefine'; my $old = \&UNIVERSAL::isa; *UNIVERSAL::isa = sub { goto &$old if defined wantarray; no strict 'refs'; push @{caller().'::ISA'}, @_; } #UNIVERSAL::isa } 1; </code> The code depends on giving another meaning of the UNIVERSAL::isa subroutine, namely when it is being called in void context: in that case it will set the caller's @ISA array with the parameters passed. <P> I like the syntax this gives. It has its limitations though, as you can list only one inheritance at a time. That's because the syntax of: <code> isa Bar; </code> actually is the indirect object syntax for: <code> Bar->isa; </code> <P> I wonder what other Monks think of this: is it a good idea? or is it an abomination? To me, it is one of the first "natural" uses of indirect object syntax. <P> Liz