in reply to Re: Doubled print with eval and open3
in thread Doubled print with eval and open3

I also still have a check for $@, since I suspect that it would be set if the fork() failed.

Yes, but *after* if !$pid, because you only want to do that in the parent.