Освежающий оператор чтения строк Perl
Что происходит после достижения eof оператором в perl?
Я читаю INP1 строка за строкой с
while(<INP1>) {
}
Но мне нужно сделать это чтение несколько раз, и мне нужно начинать с начала файла каждый раз. Как я могу это сделать? Есть ли что-то вроде освежающего потока в perl?
Заранее благодарю.
3 ответа:
Если
INP1
подключен к обычному файловому манипулятору (а не к ручке сокета или трубе), вы также можетеseek
вернемся к началу файла.while(<INP1>) { ... } seek INP1, 0, 0; # do it again while (<INP1>) { ... }
Другой вариант-загрузить весь файл в массив один раз, а затем перебирать этот массив так часто, как вы хотите. Это хорошая идея, если весь файл удобно помещается в памяти и если содержимое файла не будет меняться между переходами.
open INP1, '<', $the_file; @INP1 = <INP1>; close INP1; foreach (@INP1) { ... } # do it again foreach (@INP1) { ... }