Автор Тема: Замена  (Прочитано 3716 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн YYYn

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Замена
« : 22 Октября 2002, 18:52:45 »
Как производить замену, с помощью "s" во всем файле?

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




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

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

$line =~ s{<\\/td>\\n}{::}ig; не помогает, понимаю, что что-то не так, но что?

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Замена
« Ответ #1 : 22 Октября 2002, 19:26:15 »
Цитировать
$line =~ s{<\\/td>\\n}{::}ig; не помогает


Попробуй:
$line =~ s{\\n}{::}igs;
[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн YYYn

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Замена
« Ответ #2 : 22 Октября 2002, 23:21:24 »
Ага, я еще и по-человечески написать не могу...

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

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

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

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

Ссори, что запутал...

Оффлайн USE

  • Любитель
  • Ветеран
  • *****
  • Сообщений: 720
  • +0/-0
  • 2
    • Просмотр профиля
Замена
« Ответ #3 : 22 Октября 2002, 23:28:18 »
Цитировать
А $line - это только строчка из массива @lines и соответственно ничего не работает.

это как? ;)

надо просто перебрать все элементы массива и сделать замену в каждом. это уже описывалось недавно на форуме.
Не ходите, дети, без «Мозиллы» дальше localhost!

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Замена
« Ответ #4 : 23 Октября 2002, 10:58:30 »
Насколько я понял, проблема в том, чтобы читать не по строкам, а весь файл целиком. Если файл небольшой, то (это таки уже обсуждалось...:) )

   undef $/;
   open LINES_1,"   $lines = ;
   $lines =~ s{\\n}{::}igs;
   ...
   close LINES_1;
[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн YYYn

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Замена
« Ответ #5 : 23 Октября 2002, 13:05:25 »
Файл - 220 000 строк :(
И надо обработать Перлом, а не PHP.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Замена
« Ответ #6 : 23 Октября 2002, 13:12:13 »
Ну и вперед!

PS. А при чем тут PHP??
The documentations is your friend

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Замена
« Ответ #7 : 23 Октября 2002, 13:28:16 »
NeoNox
Цитировать
А при чем тут PHP??

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

YYYn
Если памяти много - это не проблема. Кстати,
@lines =
тоже читает весь файл в память. А если памяти нет или есть причина экономить, то нужно читать файл по частям. Но это малость посложнее будет.
[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Замена
« Ответ #8 : 23 Октября 2002, 13:35:15 »
Цитировать
Если памяти много - это не проблема.

У меня чуть меньше милиона строк в логе. Файл весит 21 метр. Мозгов на сервере 32 метра :) Нагружает, конечно, но все Ок!
Хотя, под окнами, может и повиснуть. Вероятно...
The documentations is your friend

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Замена
« Ответ #9 : 23 Октября 2002, 18:41:20 »
NeoNox
[OFF]Много/мало - это чистА субъективные понятия, в зависимости от ситуации ;)[/OFF]
[ основной браузер когда-то был, теперь попробуй разберись =]

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28