咳です。
ruby 1.2.3(99/02/16) [i586-linux] を使ってます。

話題のイテレータなんですが、

irb(main):001:0> str = '1 2 3' 
irb(main):002:0> str.split.each do |str| str = 'foo' end
irb(main):003:0> p str
"foo"

となるのは正しい挙動でしょうか ?
ブロックの中の変数(?) str に代入したら、
外の str に代入されました。


irb(main):001:0> str = '1 2 3' 
irb(main):002:0> str.split.each do |elem| elem = 'foo' end
irb(main):003:0> p elem
NameError: undefined local variable or method `elem' for #<Object:0x401030f0>

こっちはなんとなくわかる気がするのですが…。

これでいいのかな?


じつは出沢さんの smtp_send.rb を利用させてもらっていて
to_list に複数のアドレスがあると最後のアドレスだけが
To: に書かれるので気づきました。

Rubyかsmtp_send.rbどちらかの誤りだと思うんですがどうでしょうか?

私は以下の通りsmto_send.rbを変更してしのぎました。

=begin
Index: smtp_send.rb
===================================================================
RCS file: /home/mas/lib/cvsroot/labo/qsw/smtp_send.rb,v
retrieving revision 1.2
retrieving revision 1.3
diff -c -r1.2 -r1.3
*** smtp_send.rb	1999/04/02 15:26:32	1.2
--- smtp_send.rb	1999/04/07 13:52:40	1.3
***************
*** 132,138 ****
    end
  
    # 送信
!   def send(to,from,subject,txt,xheader="",cc="",bcc="")
        if xheader > ""
           xheader = "Content-Transfer-Encoding: 7bit\n" + xheader
        else
--- 132,138 ----
    end
  
    # 送信
!   def send(tolist,from,subject,txt,xheader="",cc="",bcc="")
        if xheader > ""
           xheader = "Content-Transfer-Encoding: 7bit\n" + xheader
        else
***************
*** 140,149 ****
        end
        content_type = "text/plain; charset="+
  		((txt =~ /\e|[\x80-\xff]/)? "ISO-2022-JP" : "us-ascii")
!     if(to != "") 
        until mail("<"+addr_real(from)+">"); sendcmd("RSET") ;end
  
!       to.split(/\s*,\s*/).each{|to| to=addr_real(to); 
    	 rcpt(to,true)[0] if to > "" 
        }
        cc.split(/\s*,\s*/).each{|to| to=addr_real(to); 
--- 140,149 ----
        end
        content_type = "text/plain; charset="+
  		((txt =~ /\e|[\x80-\xff]/)? "ISO-2022-JP" : "us-ascii")
!     if(tolist != "") 
        until mail("<"+addr_real(from)+">"); sendcmd("RSET") ;end
  
!       tolist.split(/\s*,\s*/).each{|to| to=addr_real(to); 
    	 rcpt(to,true)[0] if to > "" 
        }
        cc.split(/\s*,\s*/).each{|to| to=addr_real(to); 
***************
*** 151,157 ****
        }
  
        data
!       send_header(to,from,xheader,cc,subject, content_type)
        body(txt)
        eom()
      end
--- 151,157 ----
        }
  
        data
!       send_header(tolist,from,xheader,cc,subject, content_type)
        body(txt)
        eom()
      end
***************
*** 166,172 ****
        data()
        send_header("blind-copy-recipients:;",
  		from,"","","Bcc: "+subject,"Message/rfc822")
!       send_header(to,from,xheader,cc,subject,content_type)
        body(txt)
        eom()
      end
--- 166,172 ----
        data()
        send_header("blind-copy-recipients:;",
  		from,"","","Bcc: "+subject,"Message/rfc822")
!       send_header(tolist,from,xheader,cc,subject,content_type)
        body(txt)
        eom()
      end
***************
*** 188,193 ****
--- 188,196 ----
  ###################################
  # $:Id:$
  # $Log: smtp_send.rb,v $
+ # Revision 1.3  1999/04/07 13:52:40  mas
+ # *** empty log message ***
+ #
  # Revision 1.2  1999/04/02 15:26:32  mas
  # *** empty log message ***
  #


=end