Hello! В сообщении от Thursday 25 September 2008 21:36:53 Dmitry E. Oboukhov написал(а): > AP> В сообщении от Thursday 25 September 2008 20:59:08 Dmitry E. Oboukhov > AP> написал(а): > AP>>> Постановка задачи - распарсить указанные данные. Я привел решения > AP>> тиклевское и AP> перловое по идеологии (хотя оба парсера написаны на > тикле, AP>> товарищ никак не AP> может избавиться от призрака перла, на > котором мы AP>> раньше писали). > AP>> > AP>> ну вот мой парсер чем не нравится? > AP>> если не нравится $_ можно вменяемые имена переменным дать > AP>> > AP>> my ($lexem, $args) = split /\s+/, $_, 2; > AP>> или даже так: > AP>> > AP>> my ($lexem, @args) = split /\s+/; > AP>> > AP>> и функциям передавать уже расспличенный массив > > AP> Я года два на перле не писал, так вот это > > AP> eval "foo_$$_[0](\$\$_[1])"; > AP> foo_unknown($$_[1]) if $@; > > ну так давай тогда так перепишем: > > my ($lexem, @args) = split /\s+/; > ... > eval "foo_$lexem([EMAIL PROTECTED])"; > foo_unknown(@args) if $@; > > и сразу все вроде понятно стало, нет разве?
Так намного лучше. Хотя вот в таком эскейпинге - \@ очень легко ошибиться. Ну и $@ или $_ читабельности не добавляют, а совместо с ; в конце строки становятся малочитаемыми. > > AP> мне уже не прочитать. Это же брэйнфак какой-то, а не язык > программирования. почему брейнфак? $_ - универсальная временная переменная. > называлась бы она $TEMP было б так же, никто ведь не мешает называть > переменные как нравится и не использовать $_? (кстати эта переменная > синоним имеет $ARG в use English) Перл тем и плох, что позволяет писать как попало. В одном и том же коде зачастую смешиваются разные стили. А писать все в одном стиле - кода больше получается в некоторых случаях и лениво становится. > > AP> Может быть, оно и работает, но если помрет на каком-нибудь спецсимволе > AP> входных данных, > ну вообще ТАКОЙ метод парсинга как ты предложил вполне и на тикле > помереть может. На тикле я его в catch засуну на продакшене да еще в защищенный интерпретатор упакую. В тикле средства защиты динамического кода предусмотрены. > > AP> то отладка обещает быть веселой. И вы серьезно готовы > AP> мегабайт-другой такого кода поддерживать? > что тебе в этом коде не нравится кроме имени временной переменной? Да все не нравится. Вот выдернуть кусок кода из контекста > AP> eval "foo_$$_[0](\$\$_[1])"; > AP> foo_unknown($$_[1]) if $@; и уже не разберешь, что это и зачем. А если нужно быстро просмотреть модуль в сотню килобайт такого кода, написанного пару лет назад? Best regards, Alexey. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

