[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