小西 弘将です。

>
>松崎と申します。
>
>ruby 1.8.2 を使っております。
>
>タブ区切りテキストで与えられるデータを解釈しようとしているのですが、
>フィールドの数が不定の場合、
>
>例:
>    array = line.chomp.split("\t")
>    float = array.shift.to_f
>    int   = array.shift.to_i
>    str   = array.shift.sub(/^XX/, '')
>    :
>    :

floatとかにnilを入れる方法は、ほかの方が答えてられるので・・
単に、足りないレコードを満足させるのであれば

		N = 3 #レコード数
		
    array = line.chomp.split("\t")
    array.fill("",(array.size)..(N-1))
    float = array.shift.to_f
    int   = array.shift.to_i
    str   = array.shift.sub(/^XX/, '')
    :
    :

ブランクレコードをnilとするのであれば
		N = 3 #レコード数
	
		def my_split( text, splitter, size )
    	array = text.split(splitter)
	    array.fill("",(array.size)..(size-1)).map!{ |i| i=="" ? nil : i  }
		end

    array = my_split( line.chomp, "\t", N )
    float = array.shift.to_f
    int   = array.shift.to_i
    str   = array.shift.sub(/^XX/, '')
    :
    :
といった感じでしょうか。

split(sep,limit)で分割最大個数を決めることはできるのですが、いつも同じ個
数に分割できないんですよね。
split(sep,size,fill)で分割数固定とか導入できないのかな

あと、Arrayのリサイズがあるといいなと思ったりします。