2008/1/8, Carlos J. Hernandez <carlosjhr64 / fastmail.fm>: > Eric, thanks for your comment. > I'll look again, but I don't think I saw in DRb the simplicity achieved > by bash as in: > > cat source.txt | filter | sort > result.txt That line makes you eligible for a "useless cat award". > I'm saying cat, filter, and sort could be ruby programs piping Marshal > data structures. Your solution is still too complicated: you do not need the byte transfer - in fact, it may be disadvantageous because you need the full marshaled representation in memory before you can send it. This is not very nice for streaming processing. Instead, simply directly marshal data into the pipe: $ ruby -e '10.times {|i| Marshal.dump(i, $stdout) }' | ruby -e 'until $stdin.eof?; p Marshal.load($stdin) end' 0 1 2 3 4 5 6 7 8 9 The question is: how often do you actually need the processing power of two processes? On a single core machine the code is probably as efficient with a single Ruby process (probably using multiple threads) - and you do not need the piping complexity and marshaling overhead. For tasks that involve IO Ruby threads work pretty well. So, I'd be interested to hear what is the use case for your solution? Kind regards robert -- use.inject do |as, often| as.you_can - without end