From: Han Holl Date: 2002-06-02T19:16:59+09:00 Subject: Re: Reading binary files (or strings) > > > >Since it doesn't have #unpack: > >require 'stringio' > >class Dotqread > def initialize(fn) > @blob = StringIO.new(File.open(fn) {|f| f.read}) > end > def wordread > @blob.read(2).unpack("s")[0] > end > def longread > @blob.read(4).unpack("L")[0] > end > def txtread > Opstring.new(@blob.read(wordread)) > end >end > > > It certainly looks nicer than def wordread a = @blob.unpack("@#{@offset}s")[0] @offset += 2 a end or def wordread @offset += 2 @blob.unpack("@#{@offset - 2}s")[0] end but as far as I can see, you have to check for EOF before each {word|long|txt}read, or you risk calling nil.unpack() ? Cheers Han