[Volgograd] parse file
Serge S. Fukanchik
fuxx на mail.ru
Вс Май 4 15:12:41 MSD 2003
В самом начале хотелось бы признаться, что профессионально я программирую на
C++. Те самые шаблоны/stl которые многих так пугают.
И это мой основной язык. Кроме него я знаю еще множество языков и постоянно
приходится изучать новые. Но perlа среди них нет. Иногда приходится читать
программы на perlе, но писать на нем по собственному желанию я не буду. Я не
пользовался им даже в те времена когда он был невероятно популярен, даже для
простой обработки текста. Для совсем простой достаточно sed/awk, а для более
сложных программ perl не подходит.
Когда dwarf попросил пример - то он хотел в первую очередь пример регулярного
выражения, не так ли? Какая разница на каком языке? Я знал dwarfа еще в те
времена, когда он программировал под offtopic на C++ и никаких perlов и других
скриптовых языков не знал. Так что я думаю что он и продолжает программировать
на C++. К тому же ранее в списке проскальзывало его сообщение о C++ библиотеке
регулярных выражений. В силу этих причин я и написал на C. Dwarf - ты каким
примером воспользовался - моим или на perlе? И насколько тебя волнует
_правильность_ выбора языка в примере, а? [Кстати, вежливость включается сама
когда начинает попахивать флеймом и перепалкой ;-]
> Смею Вас заверить что _для меня_ пример не вызвал никаких сложностей в
> понимании. Вы проигнорировали первую часть письма. Считаю что сделать это
> на скриповых языках (perl например) было бы на порядок проще и нагляднее.
Я рад что у Вас нет проблем с C и скриптовыми языками. Но обсуждать применимость
скриптовых языков нужно не в треде о регулярных выражениях? Кроме всего прочего
Eugene Severianov прислал нам пример на perlе, и посмотрите на это в
положительном свете - у нас теперь есть два варианта на разных языках
программирования. Согласитесь, что два варианта лучше чем один. Можно выбрать
тот который больше подходит случаю. Вдруг кто-нибудь пришлет на Pythone - их
станет три. Надеюсь Вы не станете клеймить такого человека за стрельбу из
объектно-ориентированной пушки по компьютерровским воробьям, а?
Наглядность perlа весьма сомнительна. И ее подвергают сомнению все подряд.
Даже я бы сказал мода на оплевывание perlа уже успела схлынуть и он занял свое
законное место - простейший парсинг текстов. То что осталось крупного - это
просто наследие тех времен когда perl был популярен.
> Крутость с Вашей стороны заключается в том, что "я сделал на сях то, что
> на других языках делается на порядок быстрее".
Вот этого я не понимаю. C++ это мой инструмент и было бы стыдно не знать как
пользоваться своим инструментом. Крутость тут совершенно не при чем. И разве
такой пример долго писать?
> Интересно, а что вы будете
> делать, если потребуется форматированный вывод? Например таблица: перове
> поле центрировано по 15 символов, второе поле шириной 50 символов прижато
> к правому краю, etc? Какие методы будете для этого использовать и сколько
> займет времени?
Для форматированного вывода в C я скорее всего буду использовать sprintf - в нем
можно задать ширину поля и выравниваение. Или простой функцией в несколько
строчек которая будет делать нужное мне выравнивание. Неужели это проблема?
А какие методы я могу для этого использовать в perlе? Я их просто не знаю и на
изучение уйдет ой как много времени, perl не самый легко изучаемый язык.
Проще всего воспользоваться тем инструментом который есть под рукой, а не
тратить время на изучение сомнительных вещей.
Кстати, кто сейчас генерирует отчеты в plain-textе? Разве что sarg. В offtopicе
я использую Quick-Cristal-Word-Excell Reports, и не представляю себе как
использовать COM из perlа, под Linux из Texа в PostScript, в вебе отчеты в
html. Где здесь важны такие вещи как количество пробельных символов? Регулярные
выражения здесь нужны только для того чтобы разбить текст на группы - как потом
форматировать эти группы это уже забота той программы которая быдет показывать
эти группы пользователю.
> Все это я к тому, что писать парсинг файлов на С все равно что стрелять из
> пушки по воробьям (применительно данного вопроса)
А! А я уж было грешным делом подумал что все это относится к моей крутости и
моим амбициям а не к содержанию. Хорошо что Вы объяснились. Откуда мне знать
какие у dwarfа воробьи? Может у него там такие воробьи что ему не пушка а
атомная бомба нужна?
А в простейшем случае ответить dwarfу нужно было так:
posix regexpr: \[\([0-9]*:[0-9]*\)\] \([^\.]*.\)\(.*\)\(http://.*\)
пускай разбирается что с этим делать сам.
Я не хочу сказать что в голом C работа с текстом удовольствие. Но когда _нужно_
воспользоваться для этого именно C, согласитесь, будет довлоьно досадно не знать
как именно это делать.
Ну и вот... Вывод такой - в интернете существует ОГРОМНОЕ количество поводов для
флеймов и склок. Если стараться избегать упоминания таких тем - мало что
останется сказать. Просто старайтесь не разжигать в себе этот огонь, тогда и
поговорить будет о чем и матюков не будет.
Извиняюсь за объем, и удачи всем при работе с регулярными выражениями,
--
fuxx
Подробная информация о списке рассылки Volgograd