Certainly you could write your own class, derived from IO::Socket::Unix, which implemented a can_write method based on IO::Select. Or you could temporarily enable blocking during the parts when you want your print commands to block. But I don't know of any builtin way to do this.