/usr/lib/perl5/Mouse/Meta/Method/Destructor.pm is in libmouse-perl 0.97-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | package Mouse::Meta::Method::Destructor;
use Mouse::Util qw(:meta); # enables strict and warnings
use constant _MOUSE_DEBUG => $ENV{MOUSE_DEBUG} ? 1 : 0;
sub _generate_destructor{
my (undef, $metaclass) = @_;
my $demolishall = '';
for my $class ($metaclass->linearized_isa) {
if (Mouse::Util::get_code_ref($class, 'DEMOLISH')) {
$demolishall .= ' ' . $class
. '::DEMOLISH($self, $Mouse::Util::in_global_destruction);'
. "\n",
}
}
if($demolishall) {
$demolishall = sprintf <<'EOT', $demolishall;
my $e = do{
local $?;
local $@;
eval{
%s;
};
$@;
};
no warnings 'misc';
die $e if $e; # rethrow
EOT
}
my $name = $metaclass->name;
my $source = sprintf(<<'EOT', __FILE__, $name, $demolishall);
#line 1 "%s"
package %s;
sub {
my($self) = @_;
return $self->Mouse::Object::DESTROY()
if ref($self) ne __PACKAGE__;
# DEMOLISHALL
%s;
return;
}
EOT
warn $source if _MOUSE_DEBUG;
my $code;
my $e = do{
local $@;
$code = eval $source;
$@;
};
die $e if $e;
return $code;
}
1;
__END__
=head1 NAME
Mouse::Meta::Method::Destructor - A Mouse method generator for destructors
=head1 VERSION
This document describes Mouse version 0.97
=head1 SEE ALSO
L<Moose::Meta::Method::Destructor>
=cut
|