- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
# (S) (рекурсивного вызова) Генерирует контент слота рекурсивного дерева (с плюсиками). Возвращает ('RecursiveSlot'=>$textbuf) или ()
sub PlusTreeSlot {
# (P) Путь к шаблону контентной ячейки
# (P) ghm
# (P) pid
# (P) treename
# (P) Уровень
# (P) функция
# (P) $ret
return () if !exists($_[1]->{$_[2]}); # Не вкладываем ничего в слот если там ничего нет
my $textbuf;
foreach (@{$_[1]->{$_[2]}}){
my $ret=&{$_[5]}($_,$_[4],ref($_[6])?dclone($_[6]):$_[6]) if $_[5];
$textbuf.=${tmpl_prepare($_[0],{
PlusTreeSlot($_[0],$_[1],$_->{'id'},$_[3],($_[4]+1),$_[5],$ret),
%{$_},
'trname'=>$_[3],
})};
};
return ('RecursiveSlot'=>$textbuf);
};
guest 25.02.2010 18:13 # 0
А где файл открывается? В упор не вижу.
ichesnokov 25.02.2010 18:42 # 0
Не вижу, если честно, где здесь память экономится. Какая разница - каждый раз выделять блок памяти при открытии и чтении файла, а потом уничтожать его - или же постоянно хранить данные в одном блоке памяти в течение вызова функции?
zantor 26.04.2010 23:51 # 0
Oleg_quadro 02.03.2010 12:58 # 0