Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Поиск и изменеие строки в файле. |
Автор: RedOk 7.4.2008, 03:07 | ||
Допустим дан файл следующего содержания:
Как найти к примеру 5 и удалить перед ней # .? Заранее спасибо. |
Автор: konstant1n 7.4.2008, 08:40 |
смотри в http://faq.perl.org/perlfaq5.html#How_do_I_change_dele |
Автор: GoDleSS 7.4.2008, 10:20 | ||
Постараюсь попроще сделать )
|
Автор: RedOk 7.4.2008, 11:22 |
GoDleSS спаибо. |
Автор: tolkien 7.4.2008, 17:13 |
Можно все в один шаблон засунуть и поиск и замену s/#5//; |
Автор: GoDleSS 7.4.2008, 17:49 | ||||
Действительно, можно и так, но есть разница. Если в файле будет очень много строк и редко встречается нужная, то оригинальный код будет работать быстрее по 2 причинам: 1. Поиск осуществляется быстрее, чем замена. 2. Флаг /о говорит о том, что данный шаблон компилируется один раз(имеет смысл лишь в случае применения предшаблонов, т.е. шаблонов, заранее загнанных в переменные. В случае же вот такого коротенького файла
отработает скорее всего быстрее или с той же скоростью, при меньшем объеме кода. |
Автор: tolkien 7.4.2008, 18:24 |
А ты не прав. Работать будет отлично и при очень и очень большом файле даже при гиганском файле. Знаешь почему? Потому что поиск ведется не по всему файлу. А по короткой строке. |
Автор: nitr 7.4.2008, 21:44 |
tolkien, а что с памятью будет? |
Автор: tolkien 7.4.2008, 21:58 |
У тебя строки мегабайтные что ли? |
Автор: PanamOS 8.4.2008, 06:49 |
nitr, но первый пример тоже не застрахован от чрезмерных расходов памяти при больших строках;) Но Вы безусловно правы по поводу |
Автор: nitr 8.4.2008, 23:28 |
PanamOS, не спорю, но предложенный с массивом - через чур ![]() |