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 でジャンプが特徴の言語だけに。
最近のコメント