http://www.perlmonks.org?node_id=538321


in reply to dynamic zcat and grep

I believe this line:

open INFILE, 'zcat $filename |' or print "ERROR - Could not open $fil +ename";
is running afoul of Perl's quoting convention; single quotes don't interpolate variable values. Try replacing the single quotes with double quotes.

emc

" The most likely way for the world to be destroyed, most experts agree, is by accident. That's where we come in; we're computer professionals. We cause accidents."
—Nathaniel S. Borenstein

Replies are listed 'Best First'.
Re^2: dynamic zcat and grep
by clmcshque (Initiate) on Mar 21, 2006 at 22:38 UTC
    Thanks for the reply. I've tried many different encarnations of that line:
    open(INFILE, "zcat $filename |") open(INFILE, 'zcat $filename |') open INFILE, "zcat $filename |"
    all with the similar results.
    zcat: compressed data not read from a terminal. Use -f to force decomp +ression. For help, type: zcat -h

      Sorry my help was not helpful.

      I've looked at the docs for zcat (well, OpenBSD's docs for zcat) and it seems that your first and third choices should work: zcat unzips the input file to STDOUT. When I get a chance (probably about 24 hours from now), I'll muck about on by OpenBSD box to see if I can replicate your results.

      emc

      " The most likely way for the world to be destroyed, most experts agree, is by accident. That's where we come in; we're computer professionals. We cause accidents."
      —Nathaniel S. Borenstein
      Can you use your zcat in a pipe on the command line? Like

      % cat file.gz | zcat | less

      This works on Solaris but if it doesn't work for you it could be that your zcat demands the presence of a terminal as implied by your results.

      Cheers,

      JohnGG

        On the command line I use:
        $ zcat file.gz | grep ...
        Which works just fine. Is that the same?
Re^2: dynamic zcat and grep
by Anonymous Monk on Oct 03, 2012 at 02:13 UTC

    This is an old thread but this answer may prove useful to others, I had a similar problem with a command similar to

    zcat -c test.gz | pythonscript.py > test.out

    being called within a makefile, it had the same error as mentioned in this thread. I ended up changing it to

    cat test.gz | zcat -c | pythonscript.py > test.out

    Regards Brad