#!/usr/bin/perl use Encoding::BER::SNMP; my $temp="3014060e2b06010401090929010203010200040232303013060e2b06010401090929010203010300020105301d060e2b06010401090929010203010400040b5379736c6f67205472617030818c060e2b06010401090929010203010500047a3130363032333a2044656e792069636d7020737263206f7574736964653a3231362e3139362e36342e3132342064737420696e736964653a3230382e3130392e39302e323120287479706520382c20636f6465203029206279206163636573732d67726f757020226f7574736964655f6163636573735f696e223016060e2b06010401090929010203010600430473c36bf8"; $data .= chr hex $1 while $temp=s/(..)//; my $enc = Encoding::BER::SNMP->new(); while ($data) { my $result = $enc->decode($data); my $oid = $result->{'value'}->[0]->{'value'}; my $value = $result->{'value'}->[1]->{'value'}; print "returned pair: $oid -> $value\n"; my $back = $enc->encode($result); $data =~ s/\Q$back\E// or last; }