五十嵐です。

String#unpack を初めて使ってみたのですが、動作がよくわかりません。

str = "abcde"
a = str[0..2] # => "abc"
str = str[3..-1] # => "de"

と同じ操作を、unpack を使って

str = "abcde"
a, str = str.unpack("a2 a*")

と書け、動作も速くなって喜んでいたのですが、

str = "abcde"
a = str[0] # => 97
str = str[1..-1] # => "bcde"

と同じ操作を

str = "abcde"
a, str = str.unpack("C1 a*")

と書き、これは動作。ところが、

str = ""
a, str = str.unpack("C1 a*")

では、 a == nil, str == "" となると思っていたのですが、
a == "", str == nil になりました。

template文字列(のアルファベット?)のサイズの配列が
返ってくることは保証されないのでしょうか?

-- 
五十嵐 晃(ikarashi / itlb.te.noda.sut.ac.jp)