Файл усекается, потому что вы открываете его для записи (и чтения), что, как и в C (и некоторых других языках?), Означает, что файл усекается, если он уже существует. Если вы действительно хотите добавить текст в файл, вы хотите открыть его для , добавив (и читая), что в Perl выполняется с '+>>'
вместо '+>'
. Однако ваш сценарий ничего не записывает в файл, и ваше описание указывает на то, что вы хотите только читать из него, а не записывать в него, поэтому в этом случае вы должны просто открыть его для чтения только с '<'
.
Кроме того, вы никогда не должны когда-либо использовать форму с двумя аргументами open
; вместо этого всегда используйте форму с тремя аргументами (в данном случае open(NOTE, '+>>', $dir)
).
РЕДАКТИРОВАТЬ: я забыл, что открытие файла для добавления устанавливает позицию файла в конец файла, и именно с этой позиции он начнет читать. Если вы действительно хотите прочитать файл, имея возможность добавить к нему (и то, что вы предоставили, пока не дает мотивации для последней возможности), после открытия файла вам нужно использовать [seek][1]
, чтобы установить поместите его в начало файла, и , затем , читая файл, даст вам его содержимое.