I can't comment directly about your code, but i see that SNMP::Info can provide "Interface Information" and that SNMP::Util actually has a walk() method for doing a snmpwalk ... are either of these better suited for your needs?
David,
SNMP::Util requires ucd-snmp to be installed, and I am working in a production environment where as a user I am not able to install any packages at this point.
regards.