[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