Command help

Found a buddy who used something like:

hostname = open("|hostname").gets

And…

I see that it works, but I don’t find any of the documentation that
makes sense.

So – it seems to be IO class, but how? There’s no IO declaration
there.
Also, I can’t find anything that says you can open a command with a
preceding
pipe and get the output of the executed command.

I’m familiar with perls open: open(FH, “hostname |”) with a suffixed
pipe –
which is consistent with unix pipe usage.

But can someone explain to me what’s going on here so my brain doesn’t
implode?

On 10/5/06, Tom A. [email protected] wrote:

pipe and get the output of the executed command.

I’m familiar with perls open: open(FH, “hostname |”) with a suffixed pipe –
which is consistent with unix pipe usage.

But can someone explain to me what’s going on here so my brain doesn’t implode?

http://ruby-doc.org/core/classes/Kernel.html#M001989

Jan S. wrote:

So – it seems to be IO class, but how? There’s no IO declaration there.

module Kernel - RDoc Documentation

OK, I missed the “Kernel#open” in the list of where I can use open.
NOTE: the
list from ‘ri’ could be better formatted.

What’s with the pipe being at the wrong end?
What’s the thinking behind that?

On Thu, 5 Oct 2006, Tom A. wrote:

What’s with the pipe being at the wrong end?
What’s the thinking behind that?

" open a pipe to the command X "

just guessing…

-a

Tom A. schrieb:

hostname = open("|hostname").gets

What’s with the pipe being at the wrong end?
What’s the thinking behind that?

You can find a short description in ri or the Pickaxe:

C:\tmp>ri IO
-------------------------------------------------------------- Class: IO
Class +IO+ is the basis for all input and output in Ruby. An I/O
stream may be duplexed (that is, bidirectional), and so may use
more than one native operating system stream.

  Many of the examples in this section use class +File+, the only
  standard subclass of +IO+. The two classes are closely associated.

  As used in this section, _portname_ may take any of the following
  forms.

  *   A plain string represents a filename suitable for the
      underlying operating system.
  *   A string starting with ``+|+'' indicates a subprocess. The
      remainder of the string following the ``+|+'' is invoked as a
      process with appropriate input/output channels connected to 

it.

  *   A string equal to ``+|-+'' will create another Ruby instance 

as
a subprocess.

Regards,
Pit