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

Nikolay Mishin mi на ya.ru
Пт Сен 9 09:05:33 PDT 2011


красиво, спасибо за оптимизацию

09.09.2011, 19:51, "Denis Evdokimov" <evdokimov.denis на gmail.com>:
> Немного корректировки.
>
> Объявлять справочники стоит один раз(и обычно в начале программы).
> По этому для начала вынеси
>    my %months = (
>        FY  => 0,
>        Jan => 1,
>        Feb => 2,
>        Mar => 3,
>        Apr => 4,
>        May => 5,
>        Jun => 6,
>        Jul => 7,
>        Aug => 8,
>        Sep => 9,
>        Oct => 10,
>        Nov => 11,
>        Dec => 12,
>    );
> в начало.
>
> Дальше с регулярным выражением.
> Оно сильно не оптимально из-за того, что \w включает в себя знак _
> Так будет получше
> m/([A-Z0-9]+_\d+_[A-Z0-9]+)_(\d+)-([A-Z][a-z]{2})-20\d{2}_(\d+)[.]xml/
>
> Дублировать RegExp'ы плохо
> По этому стоит объявить его один раз в начале
> use constant RegExp_parse_name =>
> qr/([A-Z0-9]+_\d+_[A-Z0-9]+)_(\d+)-([A-Z][a-z]{2})-20\d{2}_(\d+)[.]xml/;
> А дальше использовать так:
>  if ( $aa =~ RegExp_parse_name ) {
>        ( $trade_id, $date, $month, $row_num ) = ( $1, $2, $months{$3}, $4 );
>    }
>    if ( $bb =~ RegExp_parse_name ) {
>        ( $btrade_id, $bdate, $bmonth, $brow_num ) =
>          ( $1, $2, $months{$3}, $4 );
>    }
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org

--
Nikolay Mishin


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