|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Renat Araslanow 2:5011/119.1 26 Apr 2003 19:00:36 To : Ruslan Sulemanov Subject : удаление строки по шаблону -------------------------------------------------------------------------------- Однажды 26 Apr 03 00:30, Ruslan Sulemanov писал Renat Araslanow: RS>>>> open(FU,"+< $path") || die "$!\n"; RS>>>> flock(FU,2); RS>>>> undef @mster; RS>>>> while(<FU>) RS>>>> { RA>>> last if($_=~m/^\s*($шаблон)\s*$/i) RA>>> } RA>>> $tls=tell FU; RS>>>> $szs=length($_); RA>>> undef $/; RA>>> $rest = <FU>; RA>>> seek( FU, $tls-($szs + $lenght_of_input_rec_sep), SEEK_SET); RA>>> binmode FU; RA>>> print FU $rest; RA>> truncate FU, tell(FU)-($szs+ $lenght_of_input_rec_sep); RA>>> #flock, афаир, снимается после закрытия файла RA>>> close FU; RA>>> И ФСЁ! RA>> вот теперь действительно фсё. RS> тогда было yже всё! :) нет. RS> зачем было дескриптор обрезать там где RS> $tls-($szs...., если yже делаешь truncate ? вот картинка файл: яяя яяя ввв ааа ффф допустим убрали строку ввв. без трункейта файл будет выглядеть так: яяя яяя ааа ффф ффф с трункейтом яяя яяя ааа ффф RS> что значит $lenght_of_input_rec_sep ? чему равен \n на данной платформе. (2 на вин/дос, 1 на никсах) RS> странно что текст не потерял \n при добавлении $rest... дык, бинмоде там не просто погулять вышла. --- [Преждевременная оптимизация -- корень всех зол Д. Кнут] * Origin: Чайник с программным управлениемЪ (2:5011/119.1) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/32783eaa841e.html, оценка из 5, голосов 10
|