To your first question, it means:
If the value of the hash %CHILDREN at key $child is a reference to a block of 'CODE' (a subroutine), then call that code reference with the value of $child as its first parameter.
kill TERM => keys %CHILDREN is very much like you suspect. To be clearer, it could be written as:
kill('TERM', keys(%CHILDREN));
kill takes a signal as the first parameter, and a list of pids to send the signal to as the rest of its parameters.
--
jwest
-><- -><- -><- -><- -><-
All things are Perfect
To every last Flaw
And bound in accord
With Eris's Law
- HBT; The Book of Advice, 1:7