#!/usr/bin/env perl -l use strict; use warnings; my %score; { local $/ = ""; while () { /\A(\w+).*?(\d+)\D*\z/ms; ++$score{$1}{count}; $score{$1}{total} += $2; } } for (sort keys %score) { print $_, ' Average ', $score{$_}{total} / $score{$_}{count}; } __DATA__ Jack Student ID - 12445 Math Score - 45 Jill Student ID - 234254 Math Score - 90 Jack Student ID -12445 Math Score2 - 33 Jill Student ID - 234254 Math Score2 - 10