Как производить замену, с помощью "s" во всем файле?
Необходимо заменить:
на что-то другое, например "::"
Для замены в строке я использую "s": $line =~ s А в файле не знаю как.
$line =~ s{<\\/td>\\n | }{::}ig; не помогает, понимаю, что что-то не так, но что?
$line =~ s{<\\/td>\\n}{::}ig; не помогает
Попробуй: $line =~ s{ | \\n}{::}igs;
Ага, я еще и по-человечески написать не могу...
Дело в том, что я открываю файл и читаю из него таким макаром:
open(LINES_1," @lines = ; close(LINES_1);
А $line - это только строчка из массива @lines и соответственно ничего не работает.
Как сделать замену во всем массиве, а не только для строки?
Ссори, что запутал...
А $line - это только строчка из массива @lines и соответственно ничего не работает. это как? ;)
надо просто перебрать все элементы массива и сделать замену в каждом. это уже описывалось недавно на форуме.
Насколько я понял, проблема в том, чтобы читать не по строкам, а весь файл целиком. Если файл небольшой, то (это таки уже обсуждалось...:) )
undef $/; open LINES_1," $lines = ; $lines =~ s{
| \\n}{::}igs; ... close LINES_1;
Файл - 220 000 строк :( И надо обработать Перлом, а не PHP.
Ну и вперед!
PS. А при чем тут PHP??
NeoNox
А при чем тут PHP?? :) :) :) [OFF] Наверное это потому, что я код сначала в [php /php]заключил ;)[/OFF]
YYYn Если памяти много - это не проблема. Кстати, @lines = тоже читает весь файл в память. А если памяти нет или есть причина экономить, то нужно читать файл по частям. Но это малость посложнее будет.
Если памяти много - это не проблема. У меня чуть меньше милиона строк в логе. Файл весит 21 метр. Мозгов на сервере 32 метра :) Нагружает, конечно, но все Ок! Хотя, под окнами, может и повиснуть. Вероятно...
NeoNox [OFF]Много/мало - это чистА субъективные понятия, в зависимости от ситуации ;)[/OFF]
| |