Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     18 Feb 2005  20:08:13
 To : Dmitry Grebeniuk
 Subject : Re: fileno / hash
 -------------------------------------------------------------------------------- 
 
 Dmitry Grebeniuk -> All  @ Fri, 18 Feb 2005 16:30:04 +0300:
 
  DG>   Обнаружилась следующая проблема: теряется fileno сокета, если его сначала
  DG> добавить в качестве ключа в хеш, а затем извлечь оттуда (возможно и при
  DG> более общих действиях).  Сокеты -- IO::Socket::INET, неблокирующие, работаю
  DG> с ними через IO::Select.  Вот пример кода:
 
  DG> my %actives = ();
  DG> my $rs = $listener->accept();
  DG> print "rs = $rs\n";
  DG> print "rs fno: ", fileno($rs), "\n";
  DG> $actives{$rs} = 1;
  DG> print "exists: ", exists($actives{$rs}), "\n";
  DG> print "keys: ", keys %actives, "\n";
  DG> print "actives fno: ",
  DG>       join(", ", map { fileno($_) || '<false>' } keys %actives), "\n";
  DG> print "rs fno: ", fileno($rs), "\n";
 
  DG>   А вот -- то, что код выводит:
 
  DG> rs = IO::Socket::INET=GLOB(0x1c2e384)
  DG> rs fno: 4
  DG> exists: 1
  DG> keys: IO::Socket::INET=GLOB(0x1c2e384)
  DG> actives fno: <false>
  DG> rs fno: 4
 
  DG>   Версия перла -- ActiveState 5.8.0.
 
  DG>   Подскажите, пожалуйста, нормально ли это, в чем причина и кто виноват.
 
 Это совершенно нормально, виноват ты, а причина в том, что ключом хэша
 является не объект, а его строковое представление.
 
 -- 
 Artem Chuprina
 RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
 --- ifmail v.2.15dev5.3
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 fileno / hash   Dmitry Grebeniuk   18 Feb 2005 17:30:04 
 Re: fileno / hash   Artem Chuprina   18 Feb 2005 20:08:13 
Архивное /ru.perl/2560620180c78.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional