Forum Webscript.Ru

Программирование => Perl => Тема начата: Gekt0r от 25 Декабря 2007, 18:31:11

Название: Помогите разобрать код...
Отправлено: Gekt0r от 25 Декабря 2007, 18:31:11
Народ, подскажите, копаюсь с чужим кодом... Непонятен блок, как и что делает... Буду признателен, если поможете разобрать....

@sections - массив секций, @subs - подсекций.
$keeper - переменная для выборки из базы по заданным параметрам.
show_in_map() - Определяет, стоит ли флаг для отображения секции или подсекции

@sections = grep { exists $_->{subs} } map {
    my @subs = $keeper->get_sections(
    s => $_->id(),
    status => 1,
    class => \'ThemeSection\'
          );

   @subs = grep { $_->show_in_map() } @subs;

   if (@subs) {
            $_->{subs} = \\@subs;
        $sum += scalar @subs;
        }
    $_;
 } @sections;

Понятно, что по выдранному из кода куску сложно что-то определить... Но тем не менее.. хотя бы последовательность выполнения блока, и какой кусок что делает, подскажите. А то я вконец запутался в этих map и grep и блоках. Понял только, что берется массив @sections, и что-то с ним делается...
Название: Помогите разобрать код...
Отправлено: arto от 25 Декабря 2007, 20:31:57
он у вас и работать не будет, скобки не совпадают.
Название: Помогите разобрать код...
Отправлено: commander от 25 Декабря 2007, 21:11:29
Gekt0r
просто возьми и перепиши...
Название: Помогите разобрать код...
Отправлено: Gekt0r от 26 Декабря 2007, 12:41:20
Цитировать
arto:
он у вас и работать не будет, скобки не совпадают.

код работает.. Со скобками нормально все.. Просто он выполняется немного некорректно, я ищу ошибку, найти не могу


Цитировать
commander:
просто возьми и перепиши...

просто переписать не удастся... Эотт код -лишь часть большого модуля, целиком его переписывать - дело неблагодарное. И я хочу все-таки разобраться во всех этих блоках и операторах.

Народ,можете помочь?
Название: Помогите разобрать код...
Отправлено: arto от 26 Декабря 2007, 15:10:45
где закрывающая скобка у "$keeper->get_sections" ?
Название: Помогите разобрать код...
Отправлено: Phoinix от 26 Декабря 2007, 16:01:45
Gekt0r

Интересно, а где ты этот фреймворк взял?

А вообще, этот код добавляет в объекты секций массивы объектов дочерних секций по параметру show_in_map()...

Причем довольно криво...
Название: Помогите разобрать код...
Отправлено: Gekt0r от 27 Декабря 2007, 11:28:27
Цитировать
arto:
где закрывающая скобка у "$keeper->get_sections" ?

а, невнимательно скопировал. Она 4 строчками ниже, я туда фигурную скобку поставил по ошибке. Но в самом коде все правильно.

Цитировать
Phoinix:
Gekt0r

Интересно, а где ты этот фреймворк взял?

А вообще, этот код добавляет в объекты секций массивы объектов дочерних секций по параметру show_in_map()...

Причем довольно криво...

это из движка сайта, с которым мне приходится разбираться...
В принципе, что я понял, он берет массив секций, выбирает для каждого список подсекций, фильтрует их по параметру show_in_map, а потом еще выбирает из секций только те, у которых есть подсекции..
А почему криво?