powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Усложнение обработки файлов
15 сообщений из 15, страница 1 из 1
(Perl) Усложнение обработки файлов
    #33095017
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую вас,
Увожаемые коллеги,

Во время обработки файлов у мебя возникла следующая проблемма:
Есть файл аутпута в него я печатаю скажем так сгенерированный текст нпример вот так:
1 <xml>
2 <head>
3
4 </head>
5 <body>
7 <info1/>........<info99999/>
8 </body>
9 </xml>
По мере печати я анализирую теги <info> и собираю нужную мне информацию.
И вот в конце возникает моя проблема мне надo сгенерировать "голову" исползуя собраную инфу.
Скажите есть ли возможность в Perl при печати в фаийл, поднятся с конца файла (в моем случае) на линию 3 и впечатать туда нужную мне информацию, не повредя тем самым уже сгенерированному содержимому?

Заранее всем вам благодарен за помошь
...
Рейтинг: 0 / 0
(Perl) Усложнение обработки файлов
    #33095190
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seek
truncate
?
...
Рейтинг: 0 / 0
(Perl) Усложнение обработки файлов
    #33095285
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor BartelСкажите есть ли возможность в Perl при печати в фаийл, поднятся с конца файла (в моем случае) на линию 3 и впечатать туда нужную мне информацию, не повредя тем самым уже сгенерированному содержимому?

Не проще ли содержимое вывода накапливать в переменной, после чего сгенерировать и вывести "голову", а уже потом дописать в файл требуемый вывод?
...
Рейтинг: 0 / 0
(Perl) Усложнение обработки файлов
    #33095311
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seek - можно только если предварительно оставил в заголовке необходимое место: в режиме insert оно не работает Я смотрю, размер файлика может дойти до мегабайта...
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
(Perl) Усложнение обработки файлов
    #33095356
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том то и проблемма что размер файла варьируеться от 10 мб и выше, и размер headera не возможно предвидеть заранее. Я слышал что в Си это мозжно сделать, используя API для работы с файлами. Но все равно можно по подробнее о seek и insert, примерчик если у кого есть, может пролить свет на некоторые детали :), спасибо
...
Рейтинг: 0 / 0
(Perl) Усложнение обработки файлов
    #33095366
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простите о seek и truncate :)
...
Рейтинг: 0 / 0
(Perl) Усложнение обработки файлов
    #33095394
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создаёшь tempfile, льёшь туда 10 метров, создаёшь файл назначения, пишешь туда заголовок и перекачивашь налитое в tempfile (вернее, из темпфайла в файл назначения). Что у тебя там? Перл? Вот и читай документацию на перл по функциям для работы с файлами.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
(Perl) Усложнение обработки файлов
    #33095426
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок я так и представлял себе эту операцию. Вот еще скажите а есть ли возможность склеить 2 файла не используя функцию print <ДЕСКРИПТОР> строка_файла. Можно ли как нить побыстрее?
...
Рейтинг: 0 / 0
(Perl) Усложнение обработки файлов
    #33095459
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
# Собираем в массив данные
@file=("Строка 1","Строка 2","Строка 3","Строка 4","Строка 5");

open(db,">file.txt") or die $!;
#open(db,"+<file.txt") or die $!;
flock(db, 2 );
# @old_file=<db>;
#seek(db, 0 , 0 );
#truncate(db, 10 );
print db join("\n",@file[ 0 ... 2 ]);
print db "\nШапка\n";
print db join("\n",@file[ 3 ..$#file]);
# print db @old_file;
close(db);
...
Рейтинг: 0 / 0
(Perl) Усложнение обработки файлов
    #33095489
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай и это должно оптимально быстро работать даже с файлами больших размеров?
...
Рейтинг: 0 / 0
(Perl) Усложнение обработки файлов
    #33095506
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
меня смущает join, наверно лучше будет сразу при формирование массива в конец каждого эллемента добавлять \n (если это конечно требуется).

а в обще попробуйте с Join и без него измерить производительность с помощью модуля Benchmark.
...
Рейтинг: 0 / 0
(Perl) Усложнение обработки файлов
    #33095760
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите Николай а что вы думаете по этому поводу:
Использование модуля File-Data-1.12
Думаете будет медленее работать?
...
Рейтинг: 0 / 0
(Perl) Усложнение обработки файлов
    #33095854
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor BartelОк я так и представлял себе эту операцию. Вот еще скажите а есть ли возможность склеить 2 файла не используя функцию print <ДЕСКРИПТОР> строка_файла. Можно ли как нить побыстрее?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
sub cat {
        my @list=@_; #список файлов для склейки 
        my $out=pop @list; # последним в списке идет имя файла, в который сливать
        open FOUT , ">$out";
        binmode FOUT;
        for my $fname (@list){
                open FIN, "<$fname";
                binmode FIN;
                while(my $n_read = sysread FIN, $buffer,  4096 * 16 ){
                        syswrite FOUT, $buffer, $n_read;
                }
                close FIN;
        }
        close FOUT;
}
Работает достаточно быстро.
Viktor Bartel
Использование модуля File-Data-1.12
Думаете будет медленее работать?

Ахез, но судя по исходнику там сначала проводится чтение всего файла в память.
...
Рейтинг: 0 / 0
(Perl) Усложнение обработки файлов
    #33095871
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок вижу спасибо большое за алгоритм. В моем случае лучше конечно так чем весь файл в память копировать :)
...
Рейтинг: 0 / 0
(Perl) Усложнение обработки файлов
    #33099973
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему не через память? что такое 10М? детский размер. Вы под юниксами или под win ?
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Усложнение обработки файлов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]