in reply to Doing IPC via class methods?

There's no need for magic. I think your needs would be adequately served by a service.

Say you call your service/daemon "FaxIt"*,

package FaxIt::Client; sub new { if (...[service is running]...) { if (...[service is non-responsive]...) { ...[restart the service]... } } else { ...[start the service]... } } sub send { ... ...[send request to the service]... ... }

* — Any ressemblance to another product's name is purely coincidental.