#!/usr/bin/perl -w use strict; use Data::Dumper; my %student; open STUDENT, ") { my @student = split(':'); $student{$student[0]} = { name => $student[1] }; } close STUDENT; open GRADES, ") { my @grades = split(' '); $student{$grades[0]}->{grade}->{$grades[1]} = $grades[2]; } close GRADES; print Dumper(\%student); print "\n------------------------------\n"; foreach my $id (sort keys %student) { print "Id: $id - $student{$id}->{name}\n"; my $graderef = $student{$id}->{grade}; foreach my $exam (sort keys %$graderef) { print " Exam: $exam grade: $graderef->{$exam}\n"; } }