#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my $sdata = 'student.data';
my %students;
open my $infile, '<', $sdata or die "Cannot open $sdata:$!\n";
while (my $line = <$infile>) {
chomp($line);
my ($id,$name,$f3,$f4) = $line =~ m/^(\d+)\s(.*)\s(..)\s(..)$/;
$students{$name}{id} = $id;
$students{$name}{f3} = $f3;
$students{$name}{f4} = $f4;
}
close $infile;
print Dumper(\%students);
####
$VAR1 = {
'Smith Tom' => {
'f3' => 'RM',
'id' => '777666555',
'f4' => 'So'
},
'Johnson Lee' => {
'f3' => 'IE',
'id' => '555444333',
'f4' => 'Sr'
},
'Jones Mary' => {
'f3' => 'SD',
'id' => '111222333',
'f4' => 'Fr'
}
};
####
for my $student (sort {$students{$a}{id} <=> $students{$b}{id}} keys %students) {
print "$student => $students{$student}{id}\n";
}