On 4/24/07, music <music / musi.ca> wrote:
> music wrote:
> > Robert Dober wrote:
> >> On 4/24/07, music <music / musi.ca> wrote:
> >>> Robert Dober wrote:
> >>> > On 4/24/07, music <music / musi.ca> wrote:
> >>> >> Robert Dober wrote:
> >>> >> > On 4/23/07, music <music / musi.ca> wrote:
> >>> >> >> I have to read in many files.
> >>> >> >> I prefer to concat those files and reading only one large file.
> >>> >> >> There is a way like unix zcat?
> >>> >> >>
> >>> >> >>
> >>> >> > Sure is
> >>> >> > ARGF
> >>> >>
> >>> >> ARGF ok, but how can I pass ARGF to a method?
> >>> >>
> >>> >>
> >>> > As a global constant it is visible anywhere, you can thus simply do
> >>> > things like this
> >>> >
> >>> > def my_method
> >>> >   ARGF.each_line do
> >>> >     | line |
> >>> >    whatever
> >>> >   end
> >>> > end
> >>>
> >>> Great!!! and if input files are in gzip format? how can I read them?
> >>>
> >>>
> >> http://www.ruby-doc.org/stdlib/libdoc/zlib/rdoc/index.html
> >>
> >
> > Yes but can I use ARGF with zlib?
>
> Any help? I'm searching in Zlib::GzipReader class but I can't undestand
> how I can use with ARGF.
>
>
Something like this
ruby -rzlib -e 'reader = Zlib::GzipReader.new(ARGF);reader.each_line
do |x| puts x end' xxx.gz
I discovered however that
Zlib::GzipReader.new(ARGF)
seems to ignore all but the first file in the argument list - unless I
did something stupid - that complicates matters slightly, you still
can do things like

ARGV.each do
   | filename |
   Zlib::GeipReader.open( filename) do
      |gz|
      gz.each_line ....
      ...
   end
end

of course but this behavior surprises me a little bit, maybe you
should mine the Zlib doc for this.

Robert

-- 
You see things; and you say Why?
But I dream things that never were; and I say Why not?
-- George Bernard Shaw