#!perl use strict; use warnings; use autodie; use Data::Dump qw(dump); my %data; #open my $in,'<', "testscores.txt"; while (){ my ($name, @score) = split /[\s=,]+/; $data{$name} = \@score; } dump \%data; my $avg = get_avg(\%data); dump $avg; sub get_avg { my ($hash_ref) = @_; my %avg = (); for my $name (sort keys %$hash_ref){ my $sum = 0; my $count = 0; for my $score (@{$hash_ref->{$name}}){ $sum += $score; ++$count; } $avg{$name} = $sum/$count; } return \%avg; } __DATA__ tim = 40 , 70, 50, 80 john = 98, 97 , 100, 89 eden = 87, 56, 89, 97 pepe = 93 ,91, 94, 90 leah = 100, 99, 99, 100 tony = 89, 94, 100, 89 matt = 68, 70, 75, 73