Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> undef'нуть все переменные после выхода из блока 
:(
    Опции темы
FooBar
Дата 25.9.2008, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 25.2.2008

Репутация: 1
Всего: 3



Здравствуйте, имеется программа на перл которая должна работать продолжительное время, во время своей работы программа обрабатывает строки различной длинны, а как известно перл не любит возвращать память системе, подробнее об этом рассказывается тут http://xpoint.ru/forums/programming/perl/m...read/1511.xhtml так вот, я хочу при выходе из функции сделать undef всем используемым в ней переменным (конечно за исключением возвращаемых значений) undef, прописывать undef вручную хоть и не трудно, но неудобно, есть ли для этого модуль или какой-нибудь элегантный способ? я пока что придумал только хранить данные в массиве или хэше, а потом делать его undef
PM MAIL   Вверх
KSURi
Дата 25.9.2008, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Что типа такого?
Код

END { undef $_ foreach $a, $b, $c, $d } 


Добавлено через 12 минут и 17 секунд
Прошу прощения, не заметил, что "при выходе из функции". Тогда в принципе варинт с массивом/хэшем подходит...


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
FooBar
Дата 25.9.2008, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 25.2.2008

Репутация: 1
Всего: 3



KSURi, да примерно так, но для завершения выполнения функции
PM MAIL   Вверх
KSURi
Дата 25.9.2008, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Или можно попробовать объявить переменные внутри ф-ии как local (хотя он не для этого предназначен, но в данном случае возможно подойдет)

Это сообщение отредактировал(а) KSURi - 25.9.2008, 12:57


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
KSURi
Дата 25.9.2008, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Код

#!perl

use strict;
use warnings;

use Data::Dumper;
use PadWalker;

foo();

sub foo {
  my($var1, $var2) = (1,2);
  print 'Before: ' . Dumper $var1, $var2;

  cleanup_callers_lexicals();

  print 'After: ' . Dumper $var1, $var2
}

sub cleanup_callers_lexicals {
  my $lexicals = PadWalker::peek_my(1);
  map { undef ${$lexicals->{$_}} } keys %{$lexicals};
  undef $lexicals
}


Код

C:\>t.pl
Before: $VAR1 = 1;
$VAR2 = 2;
After: $VAR1 = undef;
$VAR2 = undef;

C:\>


Это сообщение отредактировал(а) KSURi - 25.9.2008, 14:35


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
FooBar
Дата 25.9.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 25.2.2008

Репутация: 1
Всего: 3



KSURi, спасибо, будем разбираться
PM MAIL   Вверх
Bulat
Дата 25.9.2008, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



FooBar, создай объект, поля которого будут соответствовать этим переменным. smile

Что-то на подобе класса, когда необходимость в этом классе внутри программы отпадет, он сам почиститься smile

Это сообщение отредактировал(а) Bulat - 25.9.2008, 15:53


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
shamber
Дата 25.9.2008, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



здесь кажется в какой-то теме undef на переменных уже обсуждали почитайте
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0597 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.