$pro is defined in your code snippet and would resolve to a Net::Telnet object reference in your telnetDisconnect call.
It looks to me like $pro gets overwritten in some of the code you've removed while creating your test case above.
Check your code for incorrect $pro assignments.
Comment on Re: How to close a telnet connection when using strict