Contando e manipulando ocorrências no arquivo de texto (Perl)

Eu tenho um arquivo de texto separado por tabulação que é como

1J  L  0.5
1J  P  0.4
1J  K  0.2
1J  L  0.3
1B  K  0.7
1B  L  0.2
1B  P  0.3
1B  L  0.6
1B  L  0.3

E quero manipulá-lo para obter as seguintes informações:

Para cada elemento na 1ª coluna, conte quantos elementos repetidos existem na segunda coluna e faça a média de todos os números na terceira coluna para cada elemento da segunda coluna. A saída desejada pode ser outro arquivo de texto separado por tabulação, em que "Média" é o número médio desse elemento na 2ª coluna:

1st  K#  Average  L#  Average  P# Average 
1J  1  0.2  2  0.4  1  0.4
1B  1  0.7  3  0.38  1  0.3

Como devo proceder? Pensei em fazer um Hash of Arrays com chave = 1ª coluna, mas não acho que isso seria muito vantajoso.

Também pensei em criar várias matrizes chamadas@L, @P, @K contar as ocorrências de cada um desses elementos, para cada elemento da 1ª coluna; e outras matrizes@Ln, @Pn, @Kn que obteria todos os números para cada um deles. No final, a soma de cada número dividido porscalar @L me daria o número médio.

Mas meu principal problema é: como posso fazer todo esse processamento para cada elemento da 1ª coluna?

Editar: outra possibilidade (que estou tentando agora) é criar uma matriz de todos os elementos exclusivos da primeira coluna. Então,grepcada um e faça o processamento. Mas pode haver maneiras mais fáceis?

Edit2: pode acontecer que alguns elementos da segunda coluna não existam para alguns elementos da primeira coluna - problema: divisão por 0. Por exemplo:

1J  L  0.5
1J  P  0.4
1J  K  0.2
1J  L  0.3
1B  K  0.7
1B  L  0.2
1B  L  0.3  <- note that this is not P as in the example above.  
1B  L  0.6
1B  L  0.3

questionAnswers(4)

yourAnswerToTheQuestion