This file is indexed.

/usr/share/perl5/Class/MakeMethods/Emulator/accessors.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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package Class::MakeMethods::Emulator::accessors;

$VERSION = '0.02';

use Class::MakeMethods::Emulator '-isasubclass';
use Class::MakeMethods::Template::Hash '-isasubclass';

sub _emulator_target { 'accessors' }
sub _accessor_type { 'scalar --get_set_chain' }

sub import {
  my $class = shift;
  
  $class->_handle_namespace( $class->_emulator_target, $_[0] ) and shift;
  
  foreach ( @_ ) { 
    die "invalid accessor - $_" unless ( /\A[a-z]\w+\z/i and 
					 $_ ne 'DESTROY' and $_ ne 'AUTOLOAD' )
  }
  
  $class->make($class->_accessor_type => [@_]);
}

########################################################################

package Class::MakeMethods::Emulator::accessors::chained;
@ISA = 'Class::MakeMethods::Emulator::accessors';
$INC{'Class/MakeMethods/Emulator/accessors/chained.pm'} = 
			$INC{'Class/MakeMethods/Emulator/accessors.pm'};

sub _emulator_target { 'accessors::chained' }
sub _accessor_type { 'scalar --get_set_chain' }

########################################################################

package Class::MakeMethods::Emulator::accessors::classic;
@ISA = 'Class::MakeMethods::Emulator::accessors';
$INC{'Class/MakeMethods/Emulator/accessors/classic.pm'} = 
			$INC{'Class/MakeMethods/Emulator/accessors.pm'};

sub _emulator_target { 'accessors::classic' }
sub _accessor_type { 'scalar' }

########################################################################

1;

__END__


=head1 NAME

Class::MakeMethods::Emulator::accessors - Emulate the accessors module


=head1 SYNOPSIS

  package Foo;
  use Class::MakeMethods::Emulator::accessors qw( foo bar baz );
  
  my $obj = bless {}, 'Foo';
  
  # generates chaining accessors:
  $obj->foo( 'hello ' )
      ->bar( 'world' )
      ->baz( "!\n" );
  
  print $obj->foo, $obj->bar, $obj->baz;

This module also defines subpackages for the classic and chaining subclasses:

  package Bar;
  use Class::MakeMethods::Emulator::accessors;
  use Class::MakeMethods::Emulator::accessors::classic qw( foo bar baz );

  my $obj = bless {}, 'Bar';

  # always return the current value, even on set:
  $obj->foo( 'hello ' ) if $obj->bar( 'world' );

  print $obj->foo, $obj->bar, $obj->baz( "!\n" );


=head1 DESCRIPTION

This module emulates the functionality of the accessors module, using
Class::MakeMethods to generate similar methods. 

In particular, the following lines are equivalent:

  use accessors 'foo';
  use Class::MakeMethods::Template::Hash 'scalar --get_set_chain' => 'foo';

  use accessors::chained 'foo';
  use Class::MakeMethods::Template::Hash 'scalar --get_set_chain' => 'foo';

  use accessors::classic 'foo';
  use Class::MakeMethods::Template::Hash 'scalar' => 'foo';

You may use this module directly, as shown in the SYNOPSIS above,

Furthermore, you may call C<use Class::MakeMethods::Emulator::accessors
'-take_namespace';> to alias the accessors namespace to this package,
and subsequent calls to the original package will be transparently
handled by this emulator. To remove the emulation aliasing, call
C<use Class::MakeMethods::Emulator::accessors '-release_namespace'>. 
The same mechanism is also available for the classic and chained subclasses.

B<Caution:> This affects B<all> subsequent uses of the accessors module in
your program, including those in other modules, and might cause
unexpected effects.


=head1 SEE ALSO

See L<Class::MakeMethods> for general information about this distribution. 

See L<Class::MakeMethods::Emulator> for more about this family of subclasses.

See L<accessors> for documentation of the original module.

=cut