On 5/18/06, Stuart Holden <Stuart.Holden / baring-asset.com> wrote:
> Hi Chris,
>
> Sorry, I forgot about 'cat' being a non-standard cmd. It's on this
> machine as part of Cygwin. The one liner you gave me works great. It can
> accept filenames as arguments and STDIN via a pipe. Howerver, what I am
> going to be doing is too complex for a one line script so I will need to
> put it in a .rb file. I thought the equivalent of the '-n -e "print"'
> one liner would be:
>
>         while gets()
>                 print
>         end
>
> but, when I put this in a file called parser.rb and try
>
>         type input.txt | parser.rb
>
> I get the following:
>
>         The process tried to write to a nonexistent pipe.
>         c:/scripts/parser.rb:1:in `gets': Bad file descriptor
> (Errno::EBADF)
>           from c:/scripts/parser.rb:1
>
> Thanks,
> Stu
>

What happens if you do:

type input.txt | ruby parser.rb

?

I think the point may be that you have to call the ruby interpreter
explicitly, rather than relying on windows file associations to do the
right thing when there's a pipe involved.

-A