package MyApp::Local; use strict; sub umask { my($class, $umask) = @_; my $old = umask $umask; $class->new(sub { umask $old }); } # ... and various other more application-specific methods sub new { my($class, $cb) = @_; bless $cb, $class; } sub DESTROY { my $self = shift; $self->(); undef; } 1;