LINUX.ORG.RU

История изменений

Исправление DRVTiny, (текущая версия) :

Вот прямо выцепил из кода модуля:

sub __get_timer_settings {
    my $r=ref($_[0]);
    my $dflt=$_[1];
    return unless 
        my @afterANDperiod =
        ($r eq 'ARRAY')
            ? @{$_[0]}
            : $r
                ? (return)
                : split /:/ => $_[0];
    return unless @afterANDperiod and +@afterANDperiod<=2;
    for my $c (0,1) {
        for ($afterANDperiod[$c]) {
            return if defined and $_ and (!looks_like_number($_) or $_<0);
            ( (!(defined and length) or ($c and !$_) ) and $_=$dflt->[$c] ) or $_+=0
        }
    }
    \@afterANDperiod;    
}

Это что-то из серии «за что мне Perl не нравится».

Хотя проверка достаточно сложная: на входе должен быть либо [AFTER, PERIOD], причём если PERIOD==0, то берётся default, либо «AFTER:PERIOD» (и если чего-то нет - тоже берётся default), но, гм, по-моему на perl это реализуется наихудшим образом из возможных.

P.S. И да, Mojo::IOLoop->recurring - полное овно, раз он не поддерживает After. Почему AnyEvent поддерживает, а recurring в типа прогрессивном Mojo - нет???

Исправление DRVTiny, :

Вот прямо выцепил из кода модуля:

sub __get_timer_settings {
    my $r=ref($_[0]);
    my $dflt=$_[1];
    return unless 
        my @afterANDperiod =
        ($r eq 'ARRAY')
            ? @{$_[0]}
            : $r
                ? (return)
                : split /:/ => $_[0];
    return unless @afterANDperiod and +@afterANDperiod<=2;
    for my $c (0,1) {
        for ($afterANDperiod[$c]) {
            return if defined and $_ and (!looks_like_number($_) or $_<0);
            ( (!(defined and length) or ($c and !$_) ) and $_=$dflt->[$c] ) or $_+=0
        }
    }
    \@afterANDperiod;    
}

Это что-то из серии «за что мне Perl не нравится».

Хотя проверка достаточно сложная: на входе должен быть либо [AFTER, PERIOD], причём если PERIOD==0, то берётся default, либо «AFTER:PERIOD» (и если чего-то нет - тоже берётся default), но, гм, по-моему на perl это реализуется наихудшим образом из возможных.

Исходная версия DRVTiny, :

Вот прямо выцепил из кода модуля:

sub __get_timer_settings {
    my $r=ref($_[0]);
    my $dflt=$_[1];
    return unless 
        my @afterANDperiod =
        ($r eq 'ARRAY')
            ? @{$_[0]}
            : $r
                ? (return)
                : split /:/ => $_[0];
    return unless @afterANDperiod and +@afterANDperiod<=2;
    for my $c (0,1) {
        for ($afterANDperiod[$c]) {
            return if defined and $_ and (!looks_like_number($_) or $_<0);
            ( (!(defined and length) or ($c and !$_) ) and $_=$dflt->[$c] ) or $_+=0
        }
    }
    \@afterANDperiod;    
}

Это что-то из серии «за что мне Perl не нравится».

Хотя проверка достаточно сложная: на входе должен быть либо [AFTER, PERIOD], причём если PERIOD==0, то берётся default, либо «AFTER:PERIOD» (и если чего-то нет - тоже берётся default), но, гм, по-моему на perl это реализуется наихудшим образом из возможных.