for my $ready (IO::Select->new(map $_->[1], values %kids)->can_read(1)) { my ($kid) = grep $kids{$_}[1] == $ready, keys %kids; ## ... use $kids{$kid}[0], $kids{$kid}[2] etc. }