手続き的

相変わらず,perl cookbookの内容をrubyで書き直す練習をしているんだけれど,手続き的な記述しか出来ないとかなり負けた気分になる.
たとえばこんなコード:

tab_size = 4
str = "test   test  test"
a = str.split(/( +)/)
p = 0
a = a.map {|x|
	if x !~ /( +)/
		p += x.size
		next x
	end

	np = p + x.size
	ret = "\t" * (np/tab_size-p/tab_size) + " " * (np % tab_size)
	p = np
	ret
}
puts a.join('')
# !!元の文字列にタブが混じっていると意図通りに動作しない!!

逆に,実用かどうかはともかく,
http://d.hatena.ne.jp/iken0/20000710/p4
みたいに書けるとすっきりする.


いくつかのキーワードを入れるとgoogleで上位にくるらしい.初心者が書いているのに.