Use IPC::Run3 so we can pipe to/from std{in,out,err}