Forum Webscript.Ru

Программирование => Perl => Тема начата: YYYn от 22 Октября 2002, 18:52:45

Название: Замена
Отправлено: YYYn от 22 Октября 2002, 18:52:45
Как производить замену, с помощью "s" во всем файле?

Необходимо заменить:




на что-то другое, например "::"

Для замены в строке я использую "s":
$line =~ s     А в файле не знаю как.

$line =~ s{<\\/td>\\n}{::}ig; не помогает, понимаю, что что-то не так, но что?
Название: Замена
Отправлено: mike от 22 Октября 2002, 19:26:15
Цитировать
$line =~ s{<\\/td>\\n}{::}ig; не помогает


Попробуй:
$line =~ s{\\n}{::}igs;
Название: Замена
Отправлено: YYYn от 22 Октября 2002, 23:21:24
Ага, я еще и по-человечески написать не могу...

Дело в том, что я открываю файл и читаю из него таким макаром:

   open(LINES_1,"   @lines = ;
   close(LINES_1);

А $line - это только строчка из массива @lines и соответственно ничего не работает.

Как сделать замену во всем массиве, а не только для строки?

Ссори, что запутал...
Название: Замена
Отправлено: USE от 22 Октября 2002, 23:28:18
Цитировать
А $line - это только строчка из массива @lines и соответственно ничего не работает.

это как? ;)

надо просто перебрать все элементы массива и сделать замену в каждом. это уже описывалось недавно на форуме.
Название: Замена
Отправлено: mike от 23 Октября 2002, 10:58:30
Насколько я понял, проблема в том, чтобы читать не по строкам, а весь файл целиком. Если файл небольшой, то (это таки уже обсуждалось...:) )

   undef $/;
   open LINES_1,"   $lines = ;
   $lines =~ s{\\n}{::}igs;
   ...
   close LINES_1;
Название: Замена
Отправлено: YYYn от 23 Октября 2002, 13:05:25
Файл - 220 000 строк :(
И надо обработать Перлом, а не PHP.
Название: Замена
Отправлено: NeoNox от 23 Октября 2002, 13:12:13
Ну и вперед!

PS. А при чем тут PHP??
Название: Замена
Отправлено: mike от 23 Октября 2002, 13:28:16
NeoNox
Цитировать
А при чем тут PHP??

:) :) :)
[OFF] Наверное это потому, что я код сначала в [php /php]заключил ;)[/OFF]

YYYn
Если памяти много - это не проблема. Кстати,
@lines =
тоже читает весь файл в память. А если памяти нет или есть причина экономить, то нужно читать файл по частям. Но это малость посложнее будет.
Название: Замена
Отправлено: NeoNox от 23 Октября 2002, 13:35:15
Цитировать
Если памяти много - это не проблема.

У меня чуть меньше милиона строк в логе. Файл весит 21 метр. Мозгов на сервере 32 метра :) Нагружает, конечно, но все Ок!
Хотя, под окнами, может и повиснуть. Вероятно...
Название: Замена
Отправлено: mike от 23 Октября 2002, 18:41:20
NeoNox
[OFF]Много/мало - это чистА субъективные понятия, в зависимости от ситуации ;)[/OFF]