in reply to Pipe Error Trapping

When opening a command to a pipe, the open command will only fail if the command you're trying to run (gzcat) doesn't exist. You need to check if the command found an error, after it started running.

The solution is to check the return value of other functions -- specifically, the close function:

open IN, "cat foo|" or die "failed to open: $!"; while (<IN>) { print } close IN or die "failed to close: $!";
--Dave
Opinions my own; statements of fact may be in error.