From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

use strict;
use 5.008;
our $VERSION = '0.06';
sub import
{
Attribute::Lexical->import("SCALAR:reap" => \&reap);
Attribute::Lexical->import("ARRAY:reap" => \&reap);
Attribute::Lexical->import("HASH:reap" => \&reap);
}
=pod
=head1 NAME
threads::variables::reap::attr - reap variables in new threads by attribute
=head1 SYNOPSIS
use threads::variables::reap::attr;
# force database handle being reaped in each new thread
my $dbh : reap = DBI->connect(...);
# force array being emptied in each new thread
my @connections : reap = map { DBI->connect( @{$_} ) } @dsnlist;
=head1 DESCRIPTION
C<threads::variables::reap::attr> provides an attribute C<reap> by lexical
scoping using L<Attribute::Lexical> to mark variables to get reaped in new
threads or child processes at compile time.
=head1 AUTHOR
Jens Rehsack, C<< <rehsack at cpan.org> >>
=head1 BUGS
This module provides an attribute C<reap> analogous to L<threads::shared>
provides the C<shared> attribute. Entirely lower cased attribute names are
reserved for future features, so a warning will occure when
C<threads::variables::reap::attr> is used. Attributes should be avoided
where ever possible, so I decided it's not to bad if an additional warning
occures. Use
BEGIN { $^W = 0; }
if the warning bothers you.
Further you should recognize, that in perl before 5.9.4 the lexical state of
attribute declarations is not available at runtime. See L<Attribute::Lexical/BUGS>
for details.
Please report any bugs or feature requests to C<bug-threads-variables-reap at rt.cpan.org>,
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 threads::variables::reap::attr
You can also look for information at:
=over 4
=item * RT: CPAN's request tracker
=item * AnnoCPAN: Annotated CPAN documentation
=item * CPAN Ratings
=item * Search CPAN
=back
=head1 ACKNOWLEDGEMENTS
Larry Wall for giving us Perl - all our modules provide on his work.
David Golden for his great contribution about Perl and threads on PerlMonks
Steffen Mueller for Attribute::Handlers and the helpful explanantion about
attributes there.
Andrew Main, Adam Kennedy and Joshua ben Jore helping me pointing my problem
I'm going to solve with this module.
=head1 LICENSE AND COPYRIGHT
Copyright 2010 Jens Rehsack.
This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.
=cut
1;