Взять часть строи из $stdin


(Дмитрий Хромов) #1

cat my_file_100gb.txt | ruby io.rb

Затык у меня с:

$stdin.each_char.each_slice(1000) { |a|
puts a.inspect
}

Как мне из $stdin брать часть общей строки фиксированного размера? К примеру 1000 символов потом вторые 1000 символов итд… ?


(Kvokka) #2

обычно такое делается, чтобы не повязнуть в нехватке памяти. но засада в том, что строка занимает меньше, чем массив. так что преобразовывать в массив и потом перебирать- это как-то странно.

при этом у строки есть метод []. что-то типа

n=1;BUFFER_SIZE=42;$stdin[(n)..(n*BUFFER_SIZE)]

будет жить. надеюсь, поможет