package Module::New::Meta; use strict; use warnings; use Carp; use Sub::Install 'reinstall_sub'; my $meta; sub import { my $class = shift; my $caller = caller; foreach my $type (qw( methods functions )) { reinstall_sub({ as => $type, into => $caller, code => sub ($) { my $href = shift; foreach my $name (keys %{ $href }) { $meta->{$caller}->{$name} = $href->{$name}; } } }); } reinstall_sub({ as => 'import', into => $caller, code => sub { my $class = shift; my $caller = caller; return if $caller eq 'main'; return if $caller =~ /^Test::/; my $my_meta = $meta->{$class}; foreach my $name (keys %{ $my_meta }) { reinstall_sub({ as => $name, into => $caller, code => $my_meta->{$name}, }); } } }); } 1; __END__ =head1 NAME Module::New::Meta =head1 DESCRIPTION Used internally to install functions/methods. =head1 AUTHOR Kenichi Ishigaki, Eishigaki@cpan.orgE =head1 COPYRIGHT AND LICENSE Copyright (C) 2009 by Kenichi Ishigaki. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut