/usr/share/perl5/Moo/Object.pm is in libmoo-perl 2.002005-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 75 76 77 | package Moo::Object;
use Moo::_strictures;
use Carp ();
our %NO_BUILD;
our %NO_DEMOLISH;
our $BUILD_MAKER;
our $DEMOLISH_MAKER;
sub new {
my $class = shift;
unless (exists $NO_DEMOLISH{$class}) {
unless ($NO_DEMOLISH{$class} = !$class->can('DEMOLISH')) {
($DEMOLISH_MAKER ||= do {
require Method::Generate::DemolishAll;
Method::Generate::DemolishAll->new
})->generate_method($class);
}
}
my $proto = $class->BUILDARGS(@_);
$NO_BUILD{$class} and
return bless({}, $class);
$NO_BUILD{$class} = !$class->can('BUILD') unless exists $NO_BUILD{$class};
$NO_BUILD{$class}
? bless({}, $class)
: bless({}, $class)->BUILDALL($proto);
}
# Inlined into Method::Generate::Constructor::_generate_args() - keep in sync
sub BUILDARGS {
my $class = shift;
scalar @_ == 1
? ref $_[0] eq 'HASH'
? { %{ $_[0] } }
: Carp::croak("Single parameters to new() must be a HASH ref"
. " data => ". $_[0])
: @_ % 2
? Carp::croak("The new() method for $class expects a hash reference or a"
. " key/value list. You passed an odd number of arguments")
: {@_}
;
}
sub BUILDALL {
my $self = shift;
$self->${\(($BUILD_MAKER ||= do {
require Method::Generate::BuildAll;
Method::Generate::BuildAll->new
})->generate_method(ref($self)))}(@_);
}
sub DEMOLISHALL {
my $self = shift;
$self->${\(($DEMOLISH_MAKER ||= do {
require Method::Generate::DemolishAll;
Method::Generate::DemolishAll->new
})->generate_method(ref($self)))}(@_);
}
sub does {
return !!0
unless ($INC{'Moose/Role.pm'} || $INC{'Role/Tiny.pm'});
require Moo::Role;
my $does = Moo::Role->can("does_role");
{ no warnings 'redefine'; *does = $does }
goto &$does;
}
# duplicated in Moo::Role
sub meta {
require Moo::HandleMoose::FakeMetaClass;
my $class = ref($_[0])||$_[0];
bless({ name => $class }, 'Moo::HandleMoose::FakeMetaClass');
}
1;
|