Really, the backtick method is not really good for general usage.
Try this, and perldoc -f open while you're at it:
open my $handle, '-|', '/usr/bin/gzcat', $filename;
You get a filehandle. See perldoc IO::Handle for what you can do with it. Instead of "my $handle" you can use a fileglob, e.g. HANDLE.
You don't have to worry about escaping the filename because any special characters are handled automatically.
Reading the data works the same way as with a regular file, so remember to chomp or chop as needed.