I've never used Net::SMPP so I'm totally punting, but here are two wild guesses:
- Your destination_addr parameter doesn't have a plus sign at the beginning as shown in the sample code in Net::SMPP
- Using Data::Dumper can often help -- sometimes I see error messages like the one you are encountering when I try to invoke object methods on an object but I haven't correctly created the object, so the methods are invalid. Dump out $smpp and $resp_pdu or test 'em to make sure they are valid objects before you try to invoke their methods.