SNMP::Info::MRO(3pm)

SNMP::Info::MRO3pm

Method resolution introspection for snmp::info

Usage

 use SNMP::Info::MRO;
 use Data::Printer;
 # SNMP::Info::MRO::print_* functions
 SNMP::Info::MRO::print_superclasses ('SNMP::Info::Layer3::Juniper');
 # print output using Data::Printer for other functions
 my $buff = SNMP::Info::MRO::all_methods('SNMP::Info::Layer3::Juniper');
 p $buff;

Overview

This is a set of helpers to show where a given method in SNMP::Info has been implemented, and which implementation is being used at runtime.

The following distributions are required to run this code:

•

PPI

•

Class::ISA

•

Module::Info

•

Module::Load

Functions

None of the functions are exported. For all helper functions, you can pass either the name of a Perl module, or an object instance of SNMP::Info.

all_methods( $module )

Returns the location of methods defined in $module and all its ancestor classes (superclasses), either as Perl subroutines or via %GLOBALS or %FUNCS configuration. The data structure looks like:

 {
   method_name => {
     globals => [
       [ Package::Name        => 'mib_leaf.0' ],
       [ Other::Package::Name => '1.3.6.1.4.1.9.2.1.58.0' ],
     ],
   },
   other_method_name => [
     subs => [
       'Package::Name',
     ],
     funcs => [
       [ Package::Name => 'mib_leaf_name' ],
     ],
   ],
 }

It should be noted that the order of method resolution in SNMP::Info is to first look for a defined subroutine (this is done by Perl), then the AUTOLOAD sequence will search for a definition in %GLOBALS followed by %FUNCS.

The defining class or module at runtime is always the first entry in the list, if it exists:

 $data->{method_name}->{subs}->[0]
   if exists $data->{method_name}->{subs};
subroutines( $module )

Returns the set of subroutines defined in $module and all its ancestor classes (superclasses). The data structure looks like:

 {
   method_name => [
     'Package::Name',
     'Other::Package::Name',
   ],
   other_method_name => [
     'Package::Name',
   ],
 }

Should a subroutine have been defined more than once, the defining classes are listed in reverse order, such that the definition used at runtime is always:

 $data->{method_name}->[0];
globals( $module || $object )

Returns a data structure showing how SNMP::Info will resolve MIB Leaf Nodes configured through the %GLOBALS hashes in $module.

The data structure looks like:

 {
   method_name => [
     [ Package::Name        => 'mib_leaf_name' ],
     [ Other::Package::Name => '1.3.6.1.4.1.9.2.1.58.0' ],
   ],
   other_method_name => [
     [ Package::Name => 'mib_leaf.0' ],
   ],
 }

Where a method has been defined in different packages, then they are listed in reverse order, such that the mapping used by SNMP::Info is always:

 $data->{method_name}->[0];
funcs( $module || $object )

Returns a data structure showing how SNMP::Info will resolve MIB Tables configured through the %FUNCS hashes in $module.

See "GLOBALS" in SNMP::Info::Layer3 for further detail.

munge( $module || $object )

Returns a data structure showing the subroutines used for munging returned values for any method defined in %FUNCS or %GLOBALS.

The data structure looks like:

 {
   method_name => [
     [ Package::Name        => '&subroutine' ],
     [ Other::Package::Name => '&Other::Package::subroutine' ],
   ],
   other_method_name => [
     [ Package::Name => '&subroutine' ],
   ],
 }

Where a mapping has been defined in different packages, then they are listed in reverse order, such that the munge subroutine used by SNMP::Info is always:

 $data->{method_name}->[0];
file( $module )

Returns the filename from which Perl will load the given module.

superclasses( $class || $object )

Returns the list (in order) of the names of classes Perl will search to find methods for this SNMP::Info class or object instance.

Note this requires the Class::ISA distribution to be installed.

print_globals( $module || $object )

Pretty print the output of globals().

print_funcs( $module || $object )

Pretty print the output of funcs().

print_munge( $module || $object )

Pretty print the output of munge().

print_superclasses( $class || $object )

Pretty print the output of superclasses().

Releases

6 releases since Debian 8 (Jessie); the text changed 5 times.

  1. 8
  2. 9
  3. 10
  4. 11
  5. 12
  6. 13

Author

Oliver Gorwits <[email protected]>

From libsnmp-info-perl 3.972002-1 in Debian 13 (Trixie). Parsed by carta from the page's man source.