This is untested, and I'm not a shell string guru, but maybe you are looking just to
quiet the output of the command? Maybe try moving the /dev/null to the other side of the pipe
#untested
open(IN, "gzip -dc file.gz 2 > /dev/null | ");
#or
open(IN, "gzip -dc file.gz 2>&1 > /dev/null | ");