[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Нужен ли bash



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(\@args)";
> 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.


Reply to: