Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как реализовать многопроходное изменение txt.файла 
:(
    Опции темы
zyxerr
Дата 29.8.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 17.7.2008

Репутация: 2
Всего: 2



1) нужно в один файл вносить много изменений. Причем, выходит так, что делать это можно только в несколько проходов. Сейчас я после одного прохода печатаю во временный файл. Затем открываю это временный файл, еще один проход и сохраняю в другой временный. Но т.к. проходов много (5), то это очень неудобно. Скажите, есть ли такой модуль, который помогает реализовать подобное?


2)
Код

foreach(@a,$_){
 if (/^;/ && порядковый номер элемента в массиве=от 1 до 5) {do_smthg()}}


как узнать какой порядковый номер имеет $_ при переборе массива?
PM MAIL   Вверх
ginnie
Дата 29.8.2008, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Уважаемый zyxerr

1. Какой объем данных Вы обрабатываете? Если он небольшой, то можно грузить весь файл в массив (или переменную), производить необходимые обработки и сохранять в файл только конечный результат.
Если объем большой, то, скорее всего, без промежуточного сохранения не обойтись (зависит от действий, выполняемых на каждом проходе).

2. использование $_ в списке foreach - мысль крайне неудачная с точки зрения прозрачности кода. Если нужны индексы элементов массива, надо использовать цикл for по индексам, добавив необходимое значение в конец массива перед циклом. 


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
zyxerr
Дата 29.8.2008, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 17.7.2008

Репутация: 2
Всего: 2



ginnie

1. объем 50 mb на файл. Т.е. лучше использовать массив (в принципе, я к тому же пришел, но есть сложности с обработкой массива)
2. ясно.
у меня обльшое количество функций, которые используют ".." 

if (1..5) # с первой по пятую строку

или 

if (/Приложение (\d+)(?{$mapnum=$1;$prilnum=$1+1})/ .. &justif) #начиная с приложения (создавая переменные), до выровненного по ширине параграфа.


немного неясно как перенести конструцию if (1..5) на чтение из массива?
PM MAIL   Вверх
ginnie
Дата 29.8.2008, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



2. перенести просто

Код

for (my $counter = 0; $counter < @filelines; $counter++) {
    if ($counter == 1 .. $counter == 3) {
        print $filelines[$counter], "\n";
    }
}



--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
zyxerr
Дата 29.8.2008, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 17.7.2008

Репутация: 2
Всего: 2



ginnie
спасибо! выручили
PM MAIL   Вверх
nornad
Дата 29.8.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: нет
Всего: 31



Цитата(zyxerr @  29.8.2008,  20:22 Найти цитируемый пост)
но есть сложности с обработкой массива)

В чём заключаются сложности? По идее, при чтении из файла происходит та же обработка массива (одна строка файла - один индекс массива)   smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0668 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.