При открытии файла в режиме +>>
будет выполняться поиск конца файла, поэтому читать нечего, если вы не вернетесь seek
к началу (или середине) файла. Чтобы открыть в режиме чтения / записи с помощью курсора в начале файла, используйте режим +<
.
Тем не менее, вы, вероятно, хотите переосмыслить свой подход к этой проблеме. Похоже, вы пытаетесь прочитать строку данных, изменить ее и записать обратно в файл. Но так, как вы это сделали, вы перезаписываете строку данных next вместо строки, которую вы только что прочитали, и в любом случае новые данные длиннее (имеют больше байтов), чем старые данные. Это обязательно повредит ваш файл данных.
Некоторые лучшие подходы могут быть
сначала прочитать и обработать все данные, затем закрыть и перезаписать ввод обработанными данными
запись данных во временный файл во время его обработки, а затем перезапись ввода временным файлом (см. Также о режиме редактирования на месте интерпретатора Perl )
использовать модуль типа Tie::File
для обработки ввода-вывода на основе строки для этой задачи