Ok. Here's what seems to be happening in these two statements:
- 1. In the while loop, the pairs of Keys and Values from the hash %by_key are being fetched.
- 2. First things first: $key_list_by_value{$value}.key_list_by_value is a hash variable, which appears to contain array-refs, hence the use of @{ } around this variable.
- 3. What this second line of code is doing is that it is adding the current $key to the list pointed to by the current array-ref
Here's the understandable version of this code:
while(($key,$value)=each(%by_key)
{
$current_key_list_aref = $key_list_by_value{$value};
push(@$current_key_list_aref,$key);
}