NAME

Filter::Cleanup - Execute cleanup statements when scope closes, regardless of errors

VERSION

version 0.03

SYNOPSIS

  use Filter::Cleanup;

  open my $fh, $file_path or die $!;
  cleanup { close $fh };
  do_risky_stuff_with_fh($fh);

DESCRIPTION

Defines a block of code to be evaluated once the current scope has completed execution. If an error is thrown during the execution of statements after the cleanup block, the error is trapped and rethrown after the cleanup block is executed.

NAME

Filter::Cleanup

CAVEATS

ORDERING OF CLEANUP BLOCKS

A cleanup block will execute ahead of any cleanups defined before it. That is, for a given scope, cleanup blocks will be called in the opposite order in which they were declared.

IMPLEMENTATION

This module was originally implemented as a source filter (hence the name), but now uses Keyword::Declare.

SEE ALSO

Guard

Guard is implemented in XS and attaches a code block to the actual stack frame, ensuring it is executed regardless of how the scope was exited. In many cases, this may be preferable to the behavior of Filter::Cleanup, which will not be executed if the block calls exit or goto (note that last is handled correctly).

AUTHOR

Jeff Ober sysread@fastmail.fm

LICENSE

Perl5

AUTHOR

Jeff Ober <sysread@fastmail.fm>

COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by Jeff Ober.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.