| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > <write format> неправильный порядок в файле |
| Автор: trent 26.1.2010, 05:20 |
| Привет, всем ! я токо начал делать на Перле один репорт и не могу понять почему мои <writes format> в репорте идут в каком-то непонятном порядке, не так как программа их пишет. наверное есть какой-то buffer или еще чего я не понимаю, + я делаю мульти filehandles к одному и тому же файлу. Помогите советом кто-может, как сделать мой скрипт чтобы он писал в spool.txt все по порядку. Я вижу что если делать OPEN/CLOSE на каждый write то все нормально, но енто уже будет слишком. Мой файл довольно большой, 300+К рекордов. Может кто может посоветовать как сделать все еффективно, я смотрел методы reports, etc., но пока ето не не надо, мои репорт довольно простой, все готово, токо разобратьса с етой проблемой. Спасибо Владимир ето мой скрипт для теста только: ====================== #!/usr/bin/perl use strict; use warnings; my $cc="1"; unlink ('spool.dat'); open (OUT_LOG, '>>spool.dat'); open (OUT_HEADER, '>>spool.dat'); open (OUT_DETL, '>>spool.dat'); open (OUT_FOOT, '>>spool.dat'); open (OUT_BR, '>>spool.dat'); #============================================================================================= format OUT_HEADER= @<<<==== f0rmat HEADER HEADER HEADER Page : @<<< $cc, $cc . format OUT_DETL= @<<<======== f0ramt detail line ======================= $cc . format OUT_FOOT= @<<<======== f0rmat ===========FOOTER $cc . format OUT_BR= @<<<========= fOrmat BREAK $cc . #=============================================================================================== write OUT_HEADER; $cc++; write OUT_DETL; $cc++; write OUT_DETL; $cc++; write OUT_DETL; $cc++; write OUT_BR; $cc++; print OUT_LOG "$cc ................print after 1st break \n"; $cc++; write OUT_DETL; $cc++; write OUT_DETL; $cc++; write OUT_DETL; $cc++; write OUT_BR; $cc++; print OUT_LOG "$cc ...............print after 2nd break \n"; $cc++; write OUT_FOOT; $cc++; print "basta \n"; |
| Автор: sir_nuf_nuf 26.1.2010, 11:32 |
| А зачем вам форматы в perl ? Дело в том, что это ооочень старый функционал, можно сказать наследственный И сейчас никто им не пользуется (Ну кто будет смотреть отчеты в виде простых текстовых файлов ?) А т.к. никто ими не пользуется - то с советами тоже будет проблема. Так что а) если изучаете их для самообразования - можете смело забить и перейти к следующей теме б) если хотите строить отчеты.. - сформулируйте изначальную задачу |
| Автор: trent 27.1.2010, 07:49 |
| Спасибо за инфу, но мне все равно надо сделать простой .тхт фаил для печати и просмотра. тут вариантов нету. Задача чисто практическая, все сформулировано, тест скрипт к услугам. Основной скрипт почти готов, токо надо совет как бороться с етими бафферами, чтоб все было по порядку. Влад |
| Автор: DurRandir 27.1.2010, 12:14 |
| Форматы действительно никто не использует |
| Автор: trent 27.1.2010, 13:00 |
| Спасибо за инфо cpan://HTML::CTPP2, к сожелению ето пока не для меня, равно как методы reporter, etc. Да далеко все ушли, будем ждать динозавров. Один спец посоветовал сделать один filehandle с var и писать разные форматы через него, попробую сделать. Влад |