Puts from #!, but with data structure chrome

When playing with small scripts and using puts to output some results, I
find it rather disappointing that outputting an array or hash does not
have the data structure chrome of [ ] and { } – I know IRB does this,
but I’m testing stuff too cumbersome for IRB.

Is there a way to run a #! script and cause output using puts (or
alternative) to actually show an array like [‘a’, ‘b’] instead of just
ab ?

– gw

Alle giovedì 25 ottobre 2007, Greg W. ha scritto:

When playing with small scripts and using puts to output some results, I
find it rather disappointing that outputting an array or hash does not
have the data structure chrome of [ ] and { } – I know IRB does this,
but I’m testing stuff too cumbersome for IRB.

Is there a way to run a #! script and cause output using puts (or
alternative) to actually show an array like [‘a’, ‘b’] instead of just
ab ?

– gw

Use p instead of puts. puts(obj) calls obj.to_s, while p(obj) calls
p.inspect,
which is what IRB does.

I hope this helps

Stefano

Stefano C. wrote:

Alle giovedì 25 ottobre 2007, Greg W. ha scritto:

Is there a way to run a #! script and cause output using puts (or
alternative) to actually show an array like [‘a’, ‘b’] instead of just
ab ?

Use p instead of puts. puts(obj) calls obj.to_s, while p(obj) calls
p.inspect,
which is what IRB does.

I hope this helps

Stefano

Ahhh. Perfect. :slight_smile:

– gw

from: Greg W. [mailto:[email protected]]

Is there a way to run a #! script and cause output using puts (or

alternative) to actually show an array like [‘a’, ‘b’] instead of just

ab ?

a
=> [1, 2]

b
=> {1=>2, 2=>3}

p a,b
[1, 2]
{1=>2, 2=>3}

puts a.inspect, b.inspect
[1, 2]
{1=>2, 2=>3}

in ruby1.9, you can do

puts a.to_s, b.to_s

and p now returns array result (amazing) like,

RUBY_VERSION
=> “1.9.0”

p a,b
[1, 2]
{1=>2, 2=>3}
=> [[1, 2], {1=>2, 2=>3}]

x=(p a,b)

p x
[[1, 2], {1=>2, 2=>3}]
=> [[1, 2], {1=>2, 2=>3}]

nice for debugging/testing.

kind regards -botp