If forkpipe is missing, the open() will actually die, not just fail.  Wrap in an eval{} and check it.