| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Регулярные выражения > вставить текст после абзаца |
| Автор: gcc 20.11.2009, 21:48 | ||||
| нужно вставить текст после конкретного абзаца в файле, и чтобы этот текст входил в этот обзац т.е. как вставить строку после 8 абзаца? === не могу найти, абзацы подсчитать могу, но вставить в этот обзац не получается
|
| Автор: DEER 20.11.2009, 22:03 | ||
не подходит? |
| Автор: gcc 20.11.2009, 22:09 | ||
не хочет
==== абзацев штук 20, нужно вставить после 8 абзаца, найти его надо (строки все время добавляються), я его нашел скриптами выше, но вставляет оно перед абзацеи, а после абзаца не хочет, я пытался открыть "бинарно" файл и обработать , но пока не получается вообще-то нужно вставить после 8 абзаца и после 14... Добавлено через 44 секунды в гугле что-то нету http://www.google.com.ua/#hl=uk&q=perl+%D0%B2%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C+%D1%82%D0%B5%D0%BA%D1%81%D1%82+%D0%BF%D0%BE%D1%81%D0%BB%D0%B5+%D0%B0%D0%B1%D0%B7%D0%B0%D1%86%D0%B0&start=0&sa=N&fp=bf5056a779b927eb |
| Автор: gcc 21.11.2009, 01:53 | ||
подскажите, почему когда я пытаюсь написать
он пишет Offset outside string at ./shiz.pl line 95. |
| Автор: gcc 21.11.2009, 03:53 | ||||
подскжаите почему данный код
выдает ошибку и не записывает
на эту строку, я так понял die "sdss:: $!\n" if $written != length($string); # Закрытие файла |
| Автор: Bulat 21.11.2009, 16:06 |
| gcc, мне кажется это "железной головой" не решить.. Во-первых нужно обратиться к функциям tell и seek - это конкретная позиция в файле, возможно есть смысл изучить как в файле ообозначется новый абзац, возможно, символ "\n" и "\s" (пробел) - более чем один раз.. присваиваешь local $/ = <необходимый набор символов> и считываешь поабзацно файл Вообщем-то, на мой взгляд - без доли эвристики не обойтись |
| Автор: gcc 21.11.2009, 23:38 |
| понятно, я вот нашел http://www.spravkaweb.ru/perl/print#truncate сделал не много по другому, результат другой обзац подсчитал, вывел tell байт переместился туда на seek и +-1 байт интересно, а почему syswrite не работает? я взял пример из книги (из документации одинаковая: http://www.realcoding.net/teach/perl/7/Index2.htm http://valera.asf.ru/perl/book/6/6.4.html http://stfw.ru/page.php?id=4066 ) (я думал что синтаксическая ошибка в скрипте, но не нашел ее) |
| Автор: gcc 23.11.2009, 07:06 | ||
| amg, сори, забыл написать что написал подскажите как сделать чтобы файл заблокировать? чтобы скрипт одновременно не открыл файл перед чтение и перед записью? функция read не читаете если файл открыт для записи!! ">" по этому приходиться сначало открыть, потом закрыть, потом опять открыть и закрыть (3 раз тут я еще открыл чтобы найти абзац) нужно заблокирвоать первый раз после open для чтения? или нет? а после записи открыть просто?
|