助田です.

下のスクリプトを実行すると

 private method 'print' called

といわれるのですがこれはこういうものでしょうか?

なんでこんな変なことするかというと 
RubyWin で $>.print, STDOUT.print, STDOUT.puts などを
使えるようにするために write メソッドを定義してるんです.
で,やっぱり同じようにエラーになります.
# まあ public に変更すれば済むんですが.

class FOO
  def write(a)
    p "FOO:"+ a
  end
#  public :print
end

$> = FOO.new
$>.print "hoge\n"

  助田 雅紀 <CQN02273 / nifty.ne.jp>