Feuerbach
написал 28 мая 2005 года в 15:09 (749 просмотров)
Ведет себя
как мужчина; открыл 53 темы в форуме, оставил 447 комментариев на сайте.
Надо обработать файл некий. К примеру, сишный код.
В сишном коде разбиение на строки несущественно. То есть читать построчно — неэффективно. Куда логичней было бы разбивать файл не по переводам строк, а по пробелам. Есть ли в Perl что-нибудь такое?
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
заменить переводы сторок на пробелы и использовать split?
хм.. где? во всем файле? тогда уж лучше наоборот: заменить все пробелы на переводы строк и использовать построчное чтение. Только кто будет выполнять эту работу?..
Ну в таком случае будет двойная работа: сначала разбиение по строкам, потом по пробелам. Или имеется ввиду, что переводов строк в файле нет? Тогда это будет напряжно для памяти — вместо чтения маленькими порциями придется держать в памяти весь файл…
да, я предлагал эту работу выполнять в два этапа.
regexp-ы в perl-е вполне себе могут работать с многострочными шаблонами.
естественно, что для этого обрабатываемая конструкция должна быть целиком в памяти.
на больших файлах тут может случиться «ой» ;)
но сишные файлы не пишутся большими — максимум, что я помню — это 300кб в одном файле. перебор, если честно. разбиение на функциональные части надо использовать при объёмах более 50-70кб.
а на таких объёмах — всё нормально, проблем не возникало.
кроме того, есть разбиение по regexp, а не по подстроке. поэтому можно вполне попросить разбить на запчасти по /[ \n]/
решать грабли с записями 'a=+b*(fa(c,&d)+g(ar[4]));' (вот так, без пробелов) предлагается вопрошавшему самостоятельно. ;))
Ага, об том и речь :)
Сишные — это например (для понимания специфики файла).
А можно ли каким-нить образом «прикрутить» к перлу такую фичу? Без хака самого перла — какой-нибудь бинарный модуль, что ли… Или перл не задуман как расширяемый?
у меня проблема начиналась на 700кб файле при сложной его обработке
не хватало умолчального 8Мб сегмента данных.
Смешно…
ага, особенно вспоминая изречение «Perl-а нет, но есть CPAN»…. :D