Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 23rd, 2012  |  syntax: None  |  size: 0.52 KB  |  hits: 11  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. use strict;
  2. use warnings;
  3.  
  4. package MooseX::AutoClose;
  5.  
  6. use Devel::Declare ();
  7. use Scope::Cleanup ();
  8. use namespace::autoclean ();
  9.  
  10. sub import {
  11.     my $target = caller;
  12.  
  13.     namespace::autoclean->import(
  14.         -cleanee => $target,
  15.     );
  16.  
  17.     my $cleanup = 'Scope::Cleanup::establish_cleanup(sub { Foo->meta->make_immutable });';
  18.     my $line = Devel::Declare::get_linestr();
  19.     substr($line, Devel::Declare::get_linestr_offset(), 0) = $cleanup;
  20.     Devel::Declare::set_linestr($line);
  21.  
  22.     return;
  23. }
  24.  
  25. 1;