高橋征義です。

loup <loup / fj8.so-net.ne.jp>さん:
> > c_num=cgi.cookies['c_num']
> > c_no=cgi.cookies['c_no']
> 
> Cookie に 'c_num' と 'c_no' が存在しない場合(ショッピングの開始時
> とか)は [] が返って来ますが、例えば num = "1", no = "2" とすると、
> 
> > c_num << num
> > c_no << no
> 
> p c_num => ["1", "2"]
> p c_no  => ["1", "2"]
> 
> になります。c_num と c_no が同一のオブジェクトを指している様に見え
> ますが、そういうものなのでしょうか?

「そういうもの」では困るような。ということで cgi.rb(in Ruby 1.6.4)
を見てみたところ、

    cookies = Hash.new([])

ってやってますね……これが問題でしょう。こういう書き方をすると、
存在しない名前のcookieを取得しようとすると、全部同じ配列オブジェクト
になってしまいます。

# これ以外にも、Hash.new([]) を使っているのはcgi.rbに3個所ほど
# ありますね。むむむ。

高橋征義 (TAKAHASHI Masayoshi)   E-mail: maki / open-news.com