package Carp::Clan::Share; use warnings; use strict; =head1 NAME Carp::Clan::Share - Share your Carp::Clan settings with your whole Clan =head1 VERSION Version 0.013 =cut our $VERSION = '0.013'; require Carp::Clan; sub import { my $caller = caller(0); my @arguments = @_; shift @arguments; # Get rid of the package name $caller =~ s/::Carp$//; # If the user already named it Carp, use the parent of that. unshift @arguments, "^${caller}::"; my $package = "${caller}::Carp"; my $pm = join("/", split m/::/, $package) . ".pm"; $INC{$pm} = 1; eval "package $package;"; my $exporter; { no strict 'refs'; $exporter = *{"${package}::import"} = sub { push @_, @arguments; goto &Carp::Clan::import; }; } goto &$exporter; } =head1 SYNOPSIS package My::Namespace use Carp::Clan::Share; # My::Namespace::Carp now exists ... package My::Namespace::Module use My::Namespace::Carp; # Acts like "use Carp::Clan qw/^My::Namespace::/;" ... package My::Other::Namespace; # You can also pass options through to Carp::Clan use Carp::Clan::Share qw/verbose/; # My::Other::Namespace::Carp now exists ... package My::Other::Namespace::Module use My::Other::Namespace::Carp; # Acts like "use Carp::Clan qw/^My::Other::Namespace:: verbose/;" ... =head1 DESCRIPTION This is a very lightweight helper module (actually just an import method) that will automagically create a __PACKAGE__::Carp module for you. Any arguments passed to the import (e.g. via use) method are forwarded along to Carp::Clan. NOTE: If you use this from a package ending with ::Carp, then it will use the parent of of that package as the target namespace package My::Namespace::Carp; use Carp::Clan::Share; package My::Namespace::Module use My::Namespace::Carp; # Acts like "use Carp::Clan qw/^My::Namespace::/;" =head1 SEE ALSO L L =head1 AUTHOR Robert Krimen, C<< >> =head1 BUGS Please report any bugs or feature requests to C, or through the web interface at L. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. =head1 SUPPORT You can find documentation for this module with the perldoc command. perldoc Carp::Clan::Share You can also look for information at: =over 4 =item * RT: CPAN's request tracker L =item * AnnoCPAN: Annotated CPAN documentation L =item * CPAN Ratings L =item * Search CPAN L =back =head1 ACKNOWLEDGEMENTS =head1 COPYRIGHT & LICENSE Copyright 2008 Robert Krimen This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; # End of Carp::Clan::Share