/usr/share/perl5/Class/MakeMethods/Template/Array.pm is in libclass-makemethods-perl 1.01-5.
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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | package Class::MakeMethods::Template::Array;
use Class::MakeMethods::Template::Generic '-isasubclass';
$VERSION = 1.008;
use strict;
require 5.00;
use Carp;
=head1 NAME
Class::MakeMethods::Template::Array - Methods for manipulating positional values in arrays
=head1 SYNOPSIS
=head1 DESCRIPTION
=cut
use vars qw( %ClassInfo );
sub generic {
{
'params' => {
'array_index' => undef,
},
'code_expr' => {
_VALUE_ => '_SELF_->[_STATIC_ATTR_{array_index}]',
'-import' => { 'Template::Generic:generic' => '*' },
_EMPTY_NEW_INSTANCE_ => 'bless [], _SELF_CLASS_',
_SET_VALUES_FROM_HASH_ => 'while ( scalar @_ ) { local $_ = shift(); $self->[ _BFP_FROM_NAME_{ $_ } ] = shift() }'
},
'behavior' => {
'-init' => sub {
my $m_info = $_[0];
# If we're the first one,
if ( ! $ClassInfo{$m_info->{target_class}} ) {
# traverse inheritance hierarchy, looking for fields to inherit
my @results;
no strict 'refs';
my @sources = @{"$m_info->{target_class}\::ISA"};
while ( my $class = shift @sources ) {
next unless exists $ClassInfo{ $class };
push @sources, @{"$class\::ISA"};
if ( scalar @results ) {
Carp::croak "Too many inheritances of fields";
}
push @results, @{$ClassInfo{$class}};
}
$ClassInfo{$m_info->{target_class}} = \@sources;
}
my $class_info = $ClassInfo{$m_info->{target_class}};
if ( ! defined $m_info->{array_index} ) {
foreach ( 0..$#$class_info ) {
if ( $class_info->[$_] eq $m_info->{'name'} ) {
$m_info->{array_index} = $_; last }
}
if ( ! defined $m_info->{array_index} ) {
push @ $class_info, $m_info->{'name'};
$m_info->{array_index} = $#$class_info;
}
}
return;
},
},
}
}
########################################################################
=head2 Standard Methods
The following methods from Generic should be supported:
scalar
string
number
boolean
bits (?)
array
hash
tiedhash (?)
hash_of_arrays (?)
object
instance
array_of_objects (?)
code
code_or_scalar (?)
See L<Class::MakeMethods::Template::Generic> for the interfaces and behaviors of these method types.
The items marked with a ? above have not been tested sufficiently; please inform the author if they do not function as you would expect.
=cut
########################################################################
1;
|