#!/usr/bin/env perl use strict; use warnings; my %students; my $key = shift || 0; while () { chomp; my ( $name, $age, $reg_no, $phone, $marks, $year ) = split ":"; $students{$reg_no} = { name => $name, age => $age, phone => $phone, marks => $marks, year => $year, }; } if ($key) { # Print the details of our preselected student print "Information for student with registration number $key is: \n"; print " Name: " . $students{$key}{name} . "\n"; print " Age: " . $students{$key}{age} . "\n"; print " Phone: " . $students{$key}{phone} . "\n"; print " Marks: " . $students{$key}{marks} . "\n"; print " Year: " . $students{$key}{year} . "\n"; } else { # Print the name for each student we have a record for print "List of all students:\n"; foreach my $id ( sort keys %students ) { print " Registration Number: " . $id . "\n"; print " Name: " . $students{$id}{name} . "\n"; } } __DATA__ John Doe:20:x1:555-1234:50:2013 Jane Doe:19:x2:555-4321:55:2012 Bob Smith:22:x3:555-2468:90:2011 Mortimer Jones:18:x4:555-0313:77:2008