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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Dmitry Grebeniuk                     2:469/105      18 Feb 2005  17:30:04
 To : All
 Subject : fileno / hash
 -------------------------------------------------------------------------------- 
 
 
   Обнаружилась следующая проблема: теряется fileno сокета, если его сначала
 добавить в качестве ключа в хеш, а затем извлечь оттуда (возможно и при более
 общих действиях).  Сокеты -- IO::Socket::INET, неблокирующие, работаю с ними
 через IO::Select.
   Вот пример кода:
 
 my %actives = ();
 my $rs = $listener->accept();
 print "rs = $rs\n";
 print "rs fno: ", fileno($rs), "\n";
 $actives{$rs} = 1;
 print "exists: ", exists($actives{$rs}), "\n";
 print "keys: ", keys %actives, "\n";
 print "actives fno: ",
       join(", ", map { fileno($_) || '<false>' } keys %actives), "\n";
 print "rs fno: ", fileno($rs), "\n";
 
   А вот -- то, что код выводит:
 
 rs = IO::Socket::INET=GLOB(0x1c2e384)
 rs fno: 4
 exists: 1
 keys: IO::Socket::INET=GLOB(0x1c2e384)
 actives fno: <false>
 rs fno: 4
 
   Версия перла -- ActiveState 5.8.0.
 
   Подскажите, пожалуйста, нормально ли это, в чем причина и кто виноват.
 
 bye
 --- GoldED+/LNX 1.1.5
  * Origin: gds/FH (2:469/105)
 
 

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

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