This file is indexed.

/usr/share/perl5/PlSense/Symbol/Variable.pm is in plsense 0.3.4-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
package PlSense::Symbol::Variable;

use parent qw{ PlSense::Symbol };
use strict;
use warnings;
use Class::Std::Storable;
use Scalar::Util qw{ weaken };
use PlSense::Logger;
{
    my %lexical_is :ATTR( :init_arg<lexical> :default(1) );
    sub set_lexical { my ($self, $lexical) = @_; $lexical_is{ident $self} = $lexical; }
    sub is_lexical { my ($self) = @_; return $lexical_is{ident $self}; }

    my %importive_is :ATTR( :init_arg<importive> :default(0) );
    sub set_importive { my ($self, $importive) = @_; $importive_is{ident $self} = $importive; }
    sub is_importive { my ($self) = @_; return $importive_is{ident $self}; }

    my %belong_of :ATTR( :init_arg<belong> :default('') );
    sub set_belong {
        my ($self, $belong) = @_;
        $belong_of{ident $self} = $belong;
        weaken $belong_of{ident $self};
        if ( $belong->isa("PlSense::Symbol::Module") ) {
            $belong->set_member($self->get_name(), $self);
        }
        elsif ( $belong->isa("PlSense::Symbol::Method") ) {
            $belong->set_variable($self->get_name(), $self);
        }
        else {
            logger->error("Invalid value [$belong]");
        }
    }
    sub get_belong { my ($self) = @_; return $belong_of{ident $self}; }

    sub BUILD {
        my ($class, $ident, $arg_ref) = @_;
        my $ch = substr($class->get_name(), 0, 1) || "";
        $class->set_type( $ch eq '$' ? "scalar"
                        : $ch eq '@' ? "array"
                        : $ch eq '%' ? "hash"
                        :              "variable");
    }

    sub START {
        my ($class, $ident, $arg_ref) = @_;
        if ( exists $arg_ref->{belong} ) {
            $class->set_belong($arg_ref->{belong});
            logger->debug("New variable : name[".$class->get_name."] belong[".$class->get_belong->get_name."]");
        }
        else {
            logger->debug("New variable : name[".$class->get_name."]");
        }
    }

    sub get_id {
        my $self = shift;
        return substr $self->get_name(), 1;
    }

    sub get_fullnm {
        my $self = shift;
        my $belong = $self->get_belong();
        return $belong ? substr($self->get_name(), 0, 1).$belong->get_fullnm()."::".$self->get_id()
                       : $self->get_name();
    }
}

1;

__END__