#!/usr/bin/env perl use strict; use warnings; my %classroom = ( 10 => { classroomName => 'classroom1', student => { 9534 => { studentName => 'John', studentSurname => 'Doe', age => '12', } }, }, ); my $room = 10; my $kid = 9534; print < 'classroom2', }; # Add a student to new classroom $classroom{11}{student}{5489} = { studentName => 'Mary', studentSurname => 'Smith', age => 13, }; # Add a student to old classroom $classroom{10}{student}{3456} = { studentName => 'Jim', studentSurname => 'Baker', age => 14, }; # Print structure print "Students listed by classroom\n"; for my $cid (keys %classroom) { print "Classroom ID $cid, name $classroom{$cid}{classroomName}\n"; for my $sid (keys %{$classroom{$cid}{student}}) { my $student = $classroom{$cid}{student}{$sid}; #for less typing print ' ', join ' ', $sid, @{$student}{qw/studentName studentSurname age/}; print "\n"; } } # Print raw structure use Data::Dumper; print "\n\n", Dumper %classroom;