my @hashes = ( { child_fh => $obj1 }, { child_fh => $obj2 } ); my @readable = $s->can_read(1); for (@readable) { my $index = -1; while (++$index > -1) { last if ($hashes[$index]{child_fh} == $_); die("object not found in $hashes!\n") if ($index == $#hashes); ); # $index now contains your array index, '3' or '5' # from your example. print $hashes[$index]{child_fh}, "\n"; }