Marshal を使ってこんな感じで。
$cat ~/bin/map
#!/usr/local/bin/ruby
require 'optparse'
require 'pp'
cmdline = nil
opt = OptionParser.new
opt.on('-e VAL') {|v| cmdline = v }
opt.parse!(ARGV)
arry = Marshal.load($stdin)
ret = arry.map{|e|
e.instance_eval(cmdline)
}
if($stdout.tty?)
pp ret
else
Marshal.dump(ret, $stdout)
end
$cat ~/bin/pp
#!/usr/local/bin/ruby
require('pp')
arry = Marshal.load($stdin)
pp arry
$ ruby -e 'print Marshal.dump(["a", "bb", "ccc"])' | map -e size | pp [1, 2, 3]
ls の代わりにファイルオブジェクトの配列を返すコマンドを作ったりとかしたら面白そう。
最後の作者のコメント欄で、アイシールドの作者が HSP を使っていると書いていた。goto でジャンプが特徴の言語だけに。
最近のコメント