use strict; use warnings; use Data::Dumper; chomp(my @title = split /\s+/, ); chomp(my @data = ); my @sorted_data = map { $_->[1] } sort { $b->[0] <=> $a->[0] } map { [/^(\d+)/, $_] } @data; my $last_emp = ''; foreach my $d (@sorted_data) { $d =~ s/^$last_emp\b/' ' x length($last_emp)/e; $d =~ /^(\d+)/ and $last_emp = $1; print "$d\n"; } __DATA__ EmpNum LOCATION Shift 23 54 1 11 65 3 23 54 2