package SNMPfu; # pass an object which is either a Net::SNMP object # (as returned by Net::SNMP->session) or an SNMP::Session # object (as in the SNMP module/dist). sub wrap { my $obj = shift; bless $obj, __PACKAGE__ . '::' . ref $obj; # rebless } package SNMPfu::Net::SNMP; # wrapper for Net::SNMP use base 'Net::SNMP'; sub get # wraps Net::SNMP::get_request { my( $self, $var_id ) = @_; my $r = $self->get_request( -varbindlist => [$var_id] ); defined $r or die $self->error; $r->{$var_id} } package SNMPfu::SNMP::Session; # wrapper for SNMP::Session use base 'SNMP::Session'; sub get # wraps SNMP::Session::get { my( $self, $var_id ) = @_; $self->get($var_id) # but I'm not sure this correct. Illustration only. } 1;