LINUX.ORG.RU

perl: считать и записать в файл, как???


0

0

задача на perl:
открыть текстовый файл, считать из него строки в список, удалить из него все строки, записать в него новые строки из списка... причем этот файл можно открывать только один раз, т.е. использовать только один оператор open (или какой другой)

anonymous

по отдельности если открывать - я могу:
открыть для чтения, считать из файла - <FILE>
открыть для записи, записать в файл - print FILE
а как это все с одним открытеем - не знаю, пробовал открывать с параметром >+ - не получается...

научите как, плиз....

anonymous
()

open (FILE,"+<yy.txt");
@array=<FILE>;
#В array твой файл новый элемент массива новая строка
....
print FILE @array

OxiD ★★★★
()

Да забыл тут надо перед записью в файл его как-то обнулить (тебе ведь все стереть надо) Например запиши в него пробелов столько сколько его размер или еще что-нибудь придумай.

OxiD ★★★★
()

А что, открыть и закрыть файл ломает? :)

Или месье эстэт?

Dead ★★★★
()

to Dead
>> А что, открыть и закрыть файл ломает? :)
задача требует, чтобы файл открывался один раз, блокировался flock-ом... если открывать несолько раз и соответственно блокировать/разблокировать несколько раз, то есть вероятность перехвата файла другим процессом...

to OxiD
спасибо, буду пробовать...

кстати тут другой anonymous предложил обнулять файл truncate-ом... это подойдет?

anonymous
()

Если ты хочешь его обнулять а потом туда записывать, то можно
по-другому поступить:
переименовать его в одному только процессу известное имя,
сделать с новым файлом все что надо а затем переименовать обратно,
ну и в скрипте поставить проверку на наличие исходного файла,
если его нет, то ждать ххх сек, затем повторить попытку.
И flock'ов никаких не надо.

Susanin
()

To Susanin
спасибо, этот вариант тоже достаточно интересен

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.