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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Классы. Связывание переменных. как это работает? 
:(
    Опции темы
dmitryk1
Дата 22.7.2008, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Нашёл в инете код:

Код

package OutFile;

# Конструктор класса
sub TIESCALAR {
  my $class = shift;
  my $filename = shift;
  open(OUT, ">$filename") or die "Cannot create $filename: $!\n";
  bless {FileHandle => OUT, Value => 0}, $class;
}

# Чтение значения связанной переменной
sub FETCH {
  my $self = shift;
  return $self->{Value};
}

# Задание нового значения связанной переменной
sub STORE {
  my $self = shift;
  my $value = shift;
  my $handle = $self->{FileHandle};
  print $handle "$value\n";
  $self->{Value} = $value;
}

# Деструктор класса
sub DESTROY {
  my $self = shift;
  my $handle = $self->{FileHandle};
  close $handle;
}

1;


выполняется он так:

Код

use OutFile;

my $test;
tie $test, 'OutFile', 'myfile.txt';
$test = 'First';
$test = 'Second';
$test = 'Third';
untie $test;



И вопрос, как происходит привязка к свойствам переменной?

Я понимал что класс создаётся и в нём все процедуры и функции запускаются ручками. И каких - то привязок нет. Даже конструктор не выполняется сам а запускается. А тут... Предопределённые названия процедур? Или как?

PM MAIL GTalk Jabber   Вверх
arto
Дата 22.7.2008, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 38
Всего: 40



perldoc perltie
PM MAIL ICQ   Вверх
dmitryk1
Дата 22.7.2008, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем сори smile

Неделю разбирался не мог понят. Сюда отправил и допёрло.

Просто используется пакет Tie, который в примере не прописан. А в нём эти названия функций предопределены.


А вообще хочу Array связать с базой данных.

Может у кого-то есть наработки?
PM MAIL GTalk Jabber   Вверх
Nab
Дата 22.7.2008, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 26
Всего: 37



Думаю наработки были у всех, по крайней мере у меня были и хеши с игнорированием регистра ключей, и привязка к базе. 
А вообще посмотрите на элементарные  функции dbm, там теже механизмы используються. Это годиться только для простых задач и не ресурсоемких приложений. Для более серьезных рекомендую выбрать что либо отсюда:
http://forum.vingrad.ru/forum/topic-206516...-dbi-spops.html


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
sir_nuf_nuf
Дата 22.7.2008, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 14
Всего: 31



Цитата(dmitryk1 @  22.7.2008,  09:37 Найти цитируемый пост)
Просто используется пакет Tie, который в примере не прописан. А в нём эти названия функций предопределены.


что - то  я не слышал про пакет Tie

Скорее это выглядит так:
к скаляру привязывается объект любого класса класса ( по сути любой объект)
при попытке работы со скаляром perl вызывает методы соответствующего объекта.
имена этих методов строго определены: TIESCALAR, FETCH, STORE, UNTIE.
Это для скаляров.
Для массивов, хешей, и глобалов - свои имена методов.


Имя пакета не имеет значения.
Вообще имя пакета вы указываете при связывании переменной
Код

tie $scalar, 'Some::Packet';




Это сообщение отредактировал(а) sir_nuf_nuf - 22.7.2008, 15:13


--------------------
user posted image
user posted image
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.0484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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