#!C:\Perl64\bin\perl.exe
use strict;
use warnings;
my $RECORD = [
{ 'NAME' => 'J. Green', 'GRADE' => 'P2', 'POSITION' => 'HUMAN RESOURCES OFFICER' },
{ 'NAME' => 'P. Smith', 'GRADE' => 'P1','POSITION' => 'FORESTRY OFFICER' },
{ 'NAME' => 'T. Turner', 'GRADE' => 'P1','POSITION' => 'FORESTRY OFFICER' },
{ 'NAME' => 'K. Turner', 'GRADE' => 'P1','POSITION' => 'FORESTRY OFFICER' },
{ 'NAME' => 'R. Forest', 'GRADE' => 'P5' ,'POSITION' => 'SENIOR OFFICER'},
{ 'NAME' => 'R.Forest', 'GRADE' => 'P5' ,'POSITION' => 'SENIOR OFFICER'},
{ 'NAME' => 'K. King', 'GRADE' => 'P5','POSITION' => 'SENIOR OFFICER' },
{ 'NAME' => 'K. King', 'GRADE' => 'P3' ,'POSITION' => 'JUNIOR OFFICER'},
{ 'NAME' => 'K. King', 'GRADE' => 'P3' ,'POSITION' => 'POLICY OFFICER'},
{ 'NAME' => 'K. King', 'GRADE' => 'P1' ,'POSITION' => 'GENERAL OFFICER'},
{ 'NAME' => 'K. King', 'GRADE' => 'DG' ,'POSITION' => 'SENIOR DIRECTOR'},
{ 'NAME' => 'K. King', 'GRADE' => 'ADG','POSITION' => 'JUNIOR OFFICER' },
];
my $previous_grade='';
my $previous_position='';
my %grade_count;
my %position_count;
my $C=0;
for my $p ( sort { substr($$a{GRADE},0,1) cmp substr($$b{GRADE},0,1) || substr($$b{GRADE},0,2) cmp substr($$a{GRADE},0,2)} @$RECORD) {
#for my $p ( sort { substr($$a{GRADE},0,1) cmp substr($$b{GRADE},0,1) || substr($$b{GRADE},0,2) cmp substr($$a{GRADE},0,2)} @{$AG{$A}}) {
my( $grade, $name,$position ) = ( $p->{'GRADE'}, $p->{'NAME'},$p->{'POSITION'} );
my $pp="";
my $gg="";
if ($grade eq $previous_grade && $position eq $previous_position ) {
$position=" ";
$gg=$grade=" ";
$pp=$position;
$grade_count{$previous_grade}++;
$position_count{$previous_position}++;
}
else {
$gg=$p->{'GRADE'};
$pp=$p->{'POSITION'};
$grade_count{$previous_grade}++;
$position_count{$previous_position}++;
}
if($grade_count{$previous_grade} == 1 && $position_count{$previous_position} == 1) {
$C=$grade_count{$previous_grade};
print "$C"," ",$gg," ",$pp," ",$p->{NAME},"\n";
$grade_count{$previous_grade}++;
$position_count{$previous_position}++;
}
elsif($grade_count{$previous_grade} > 1 && $position_count{$previous_position} > 1) {
$C=$grade_count{$previous_grade};
print $C," ",$gg," ",$pp," ",$p->{NAME},"\n";
}
$previous_grade = $p->{'GRADE'};
$previous_position = $p->{'POSITION'};
}
####
1 ADG JUNIOR OFFICER K. King
1 DG SENIOR DIRECTOR K. King
1 P5 SENIOR OFFICER R. Forest
1 R.Forest
3 K. King
4 P3 JUNIOR OFFICER K. King
1 P1 FORESTRY OFFICER P. Smith
1 T. Turner
3 K. Turner
4 P1 GENERAL OFFICER K. King
####
1 ADG JUNIOR OFFICER K. King
1 DG SENIOR DIRECTOR K. King
3 P5 SENIOR OFFICER R. Forest
R.Forest
K. King
1 P3 JUNIOR OFFICER K. King
3 P1 FORESTRY OFFICER P. Smith
T. Turner
K. Turner
1 P1 GENERAL OFFICER K. King