> #!/usr/bin/env ruby
> module AwkSplit
>   def awk_split( arg = ' ' )
>     while self.gets
>       f = split( arg )
>       yield f
>     end
>   end
> end
> 
> class IO
>   include AwkSplit
> end
> ARGF.extend AwkSplit
> 
> def awk_split( arg = ' ' )
>   ARGF.awk_split( arg ) {|args| yield args}
> end
> 
> if __FILE__ == $0  # awk-split.rbそのものを実行したときのみ↓のコードが実行されるイディオム。
>   open( "/etc/passwd" ) do |inf|
>     inf.awk_split( /:/ ) do |user, pass, uid, gid, group, home, shell|
>       puts user
>     end
>   end
> end

上記プログラムが理解できません。

上記 ruby プログラムの
1. module 内の awk_split と、 class 定義の下の
awk_split はどういう関係になるのでしょうか?
2. なぜ、同じ(ような?)ものが2ついるののでしょうか?
3. class の下の awk_split 内の メソッド awk_split
は、自分自身なのでしょうか?
4.  ARGF.extend AwkSplit ??

??? がたくさん沸きます。 Ruby プログラミング入門読んでますが
答えが出ません。

---------------- 
くすのき@かなざわ
http://www.heididorf.net
kusunoki / mbox.kyoto-inet.or.jp