[perl]уничтожение переменных

stm7583298

Возник вот такой вопрос, на который гугл пока не дал ответа:
Предположим, я вызываю функцию, в теле которой создаются массивы:

sub my {
......
my @arr1 = ;
my @arr2 = ;
......
}

Как в конце функции убить эти массивы? Все упоминания об уничтожении объектов, которые я нашел, относятся к классам, а делать класс совсем неохота

Elina74

они сами умрут после выхода из подпрограммы

stm7583298

Пасиб Позаботились создатели о программерах

kruzer25

Перл - всё-таки очень высокоуровневый язык...

stm7583298

В небезызвестной книжке про это есть вот что:

BEFOREHAND: close door, each window & exit; wait until time.
open spellbook, study, read (scan, select, tell us);
write it, print the hex while each watches,
reverse its length, write again;
kill spiders, pop them, chop, split, kill them.
unlink arms, shift, wait & listen (listening, wait
sort the flock (then, warn the "goats" & kill the "sheep");
kill them, dump qualms, shift moralities,
values aside, each one;
die sheep! die to reverse the system
you accept (reject, respect);
next step,
kill the next sacrifice, each sacrifice,
wait, redo ritual until "all the spirits are pleased";
do it ("as they say").
do it(*everyone***must***participate***in***forbidden**s*e*x*).
return last victim; package body;
exit crypt (time, times & "half a time") & close it,
select (quickly) & warn your next victim;
AFTERWORDS: tell nobody.
wait, wait until time;
wait until next year, next decade;
sleep, sleep, die yourself,
die at last

rosali

То что удаляются такие массивы как раз не так уж и круто -- это же просто локальные переменные на стеке. На самом деле в перле есть даже кое-какая сборка мусора на хипе -- даже вот такой массив освободится самостоятельно:

sub f {
my $arr1 = [];
}

правда, эта сборка мусора основана на подсчете ссылок, поэтому вот такой код приведет к течке

sub f {
my $arr1 = [];
my $arr2 = [$arr1];
push @$arr1, $arr2;
}

eduard615

undef в руки и вперед

rosali

Нет ну одно дело когда в языке _есть_ сборка мусора, другое дело когда язык _претендует_ на то что она есть, а на деле...
PS. В основном на перле пишут программы которым в сущности не нужно вообще освобождение памяти не демонов же на перле писать

Marinavo_0507

полно демонов на перле

rosali

Да за**ался я уже этих перловых демонов eval {alarm ...}-ами обкладывать! DBI просто виснет при проблемах с базой, остальные библиотеки не менее приспособлены для написания демонов. Для меня теперь существует только один демон: cron, остальное -- ошибки молодости

Marinavo_0507

не знаю, mrtg вроде работает
а зачем демону самому писать в базу?

Ivan8209

mrtg стал демоном?
А я его из cron запускал...
---
...Я работаю антинаучным аферистом...

shlyumper

он и так и так умеет.

Barbie29

$#arr=-1;
и фсе...

eduard615

В основном на перле пишут программы которым в сущности не нужно вообще освобождение памяти не демонов же на перле писать
Я часто пишу демонов на перле -- просто надо отдавать себе отчет в том, что делаешь.
Освообождение памяти нужно еще в mod_perle. Там правда беда в том, что под него нет ни одного профилера
Оставить комментарий
Имя или ник:
Комментарий: