[Moscow.pm] transform sort function to Schwartzian Transform ??

Ilya Chesnokov chesnokov.ilya на gmail.com
Сб Сен 10 04:37:57 PDT 2011


10 сентября 2011 г. 2:36 пользователь Alexandr Gomoliako
<zzz на zzz.org.ua> написал:
> On 9/10/11, Ilya Chesnokov <chesnokov.ilya на gmail.com> wrote:
>>> Нет, выносить регулярное выражение в константы недопустимо
>>
>> С этим, кстати, тоже не согласен. Не только допустимо, но и очень
>> удобно. Например, в модуле Regexp::Common полно готовых регекспов, к
>> которым можно обратиться по имени. А чем мы хуже? ))
>
> Т.е. вы считаете вот это читабельным кодом? Тогда скажите, что будет в $&?

В $& всегда хранится часть строки, которая соответствует регулярному
выражению, т.е. в данном случае это всё число с плавающей точкой.
А что хранится в $1, $2, $3 и т.д., можно посмотреть в perldoc
Regexp::Common::number.

И да, я считаю, что приведённое выражение гораздо более читабельно,
чем аналогичное:

if ( $str =~ /((?i)([+-]?)((?=[.]?[0-9])([0-9]*)(?:([.])([0-9]{0,}))?)(?:([E])(([+-]?)([0-9]+))|))/
) {
   ...
}


> if ($str =~ $RE{num}{real}{-keep}) {
>    $number   = $1;
>    $whole    = $3;
>    $decimals = $5;
> }
>

-- 
Ilya Chesnokov


Подробная информация о списке рассылки Moscow-pm