I've been hit by this
before.
If you have an AUTOLOAD method and a DESTROY method isn't defined, your AUTOLOAD will catch it.
Just add this to the module.
sub DESTROY {}
update
To be more explicit: When the object is destroyed (goes out of scope / program ends) the module's DESTROY method will automatically be called. Because you have AUTOLOAD defined, it will catch that call.