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