|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/18414215fdbd.html, оценка из 5, голосов 10
|