in reply to seamlessly use an extended class's use'd libs

If you add carp and your modules function(s) eg. Thing() to the @EXPORT global in your module, they will be exported into the namespace of anyone useing your module. However, this is not considered the "done thing" in most cases.

The alternative is to add them to the @EXPORT_OK global. Then, anyone useing your module must explicitly name them on their use yourmodule qw(yourfunc carp); line in order that they become part of their namespace. So, given a module defined as:

package Some::Really::Long; use Carp; use Exporter; @ISA=(Exporter); #@EXPORT=qw(Thing carp); # Method 1. @EXPORT_OK=qw(Thing carp); # Method 2. (preferred). $VERSION = 1.00; sub Thing{ return 'From Some::Really::Long::Thing()'; } 1;

And a main program defined as

#! perl -sw use strict; #use Some::Really::Long; # Method 1. use Some::Really::Long qw(Thing carp); # Method 2 (preferred). print Thing(),$/; carp "T'is a good day to die!\n";

Using either method, the program gives:

C:\test>test From Some::Really::Long::Thing() T'is a good day to die!
I am not sure whether propogating use'd methods this way is "the done thing". It seems that it would be easier to just have the child class use Carp; if it needs to, rather than trying to propogate it down? I'm sure you'll get other (and better) opinions on this.
Well It's better than the Abottoire, but Yorkshire!