The simple answer to your question is no, but... Normally attempting to open a pipe with no writer for read will block (I assume this is *nix), but you can use
sysopen with O_NONBLOCK or O_NDELAY. Opening with O_NONBLOCK should return the number of bytes read as -1 on read, and set $! to EAGAIN, or returns 0 if there is no writer; using O_NDELAY just returns 0 if the pipe is empty.
The downside is that when you do have data in the pipe you may have to loop until you get the number of bytes required, since there might have been a partial write.
Update: corrected some wording