package ExportTo; use strict; sub import { my( $self, $exports )= @_; if( 2 != @_ || ! ref($exports) || ! UNIVERSAL::isa($exports,"ARRAY") ) { require Carp; Carp::croak( 'Usage: use ',__PACKAGE__, '( [ qw( func to export ) ] )' ); } my $caller= caller(); my $import= sub { if( 2 != @_ ) { require Carp; Carp::croak( 'Usage: use ',$caller, '( "DataType::Class" )' ); } my( $self, $class )= @_; for my $meth ( @$exports ) { no strict 'refs'; *{$class."::".$meth}= \&{$caller."::".$meth}; } }; no strict 'refs'; *{$caller."::import"}= $import; } 1;