ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Guard/Guard.pm
(Generate patch)

Comparing Guard/Guard.pm (file contents):
Revision 1.15 by root, Sat Dec 13 22:09:25 2008 UTC vs.
Revision 1.21 by root, Sun Jul 19 05:44:10 2009 UTC

13 chdir "/etc"; 13 chdir "/etc";
14 14
15 code_that_might_die_or_does_other_fun_stuff; 15 code_that_might_die_or_does_other_fun_stuff;
16 } 16 }
17 17
18 # create an object that, when the last reference to it is gone,
19 # invokes the given codeblock:
20 my $guard = guard { print "destroyed!\n" };
21 undef $guard; # probably destroyed here
22
18=head1 DESCRIPTION 23=head1 DESCRIPTION
19 24
20This module implements so-called "guards". A guard is something (usually 25This module implements so-called "guards". A guard is something (usually
21an object) that "guards" a resource, ensuring that it is cleaned up when 26an object) that "guards" a resource, ensuring that it is cleaned up when
22expected. 27expected.
37package Guard; 42package Guard;
38 43
39no warnings; 44no warnings;
40 45
41BEGIN { 46BEGIN {
42 $VERSION = '0.5'; 47 $VERSION = '1.021';
43 @ISA = qw(Exporter); 48 @ISA = qw(Exporter);
44 @EXPORT = qw(guard scope_guard); 49 @EXPORT = qw(guard scope_guard);
45 50
46 require Exporter; 51 require Exporter;
47 52
189=head1 THANKS 194=head1 THANKS
190 195
191Thanks to Marco Maisenhelder, who reminded me of the C<$Guard::DIED> 196Thanks to Marco Maisenhelder, who reminded me of the C<$Guard::DIED>
192solution to the problem of exceptions. 197solution to the problem of exceptions.
193 198
199=head1 SEE ALSO
200
201L<Scope::Guard> and L<Sub::ScopeFinalizer>, which actually implement
202dynamic, not scoped guards, and have a lot higher CPU, memory and typing
203overhead.
204
205L<Hook::Scope>, which has apparently never been finished and corrupts
206memory when used.
207
194=cut 208=cut
195 209

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines