#! perl -sw use strict; #! Define and populate an array of hashes my @Groups = ({}, {}, {}, {}, {}, {}); #! This would be easily done in a loop from another file. #! Populated each of the hashes with #! a Key ('array') set to an anonymous array #! Plus a key for each prefix in the group @{$Groups[1]}{'array', qw( A1 A2 A3 A4 A5 A6 A7 A8 A9 A0 )} = []; @{$Groups[2]}{'array', qw( B1 B2 B3 B4 B5 B6 B7 B8 B9 B0 )} = []; @{$Groups[3]}{'array', qw( C1 C2 C3 C4 C5 C6 C7 C8 C9 C0 )} = []; @{$Groups[4]}{'array', qw( D1 D2 D3 D4 D5 D6 D7 D8 D9 D0 )} = []; @{$Groups[5]}{'array', qw( E1 E2 E3 E4 E5 E6 E7 E8 E9 E0 )} = []; @{$Groups[6]}{'array', qw( F1 F2 F3 F4 F5 F6 F7 F8 F9 F0 )} = []; while (my $input = ) { chomp ($input); my $prefix = substr($input,0,2); for (1..6) { #loop over the AoH #! Push the value onto the groups array push @{$Groups[$_]{array}}, $input #! and skip the rest and last #! if the prefix exists in this groups hash if exists $Groups[$_]{$prefix}; } } { local $"=$/; #!" Print them out print "Group $_\n@{$Groups[$_]{array}}\n" for 1..6; } __DATA__ F3xxxxxxxxxxxxx15 A1xxxxxxxxxxxxx42 E5xxxxxxxxxxxxx47 A1xxxxxxxxxxxxx15 A7xxxxxxxxxxxxx70 A0xxxxxxxxxxxxx68 E7xxxxxxxxxxxxx34 C0xxxxxxxxxxxxx6 A9xxxxxxxxxxxxx24 F2xxxxxxxxxxxxx82 B2xxxxxxxxxxxxx46 E3xxxxxxxxxxxxx0 B8xxxxxxxxxxxxx40 D4xxxxxxxxxxxxx22 F4xxxxxxxxxxxxx33 B6xxxxxxxxxxxxx16 C5xxxxxxxxxxxxx9 D9xxxxxxxxxxxxx83 D0xxxxxxxxxxxxx52 B0xxxxxxxxxxxxx76 A8xxxxxxxxxxxxx39 C9xxxxxxxxxxxxx84 E9xxxxxxxxxxxxx8 E5xxxxxxxxxxxxx57 A0xxxxxxxxxxxxx36 C2xxxxxxxxxxxxx1 E9xxxxxxxxxxxxx51 C5xxxxxxxxxxxxx6 E0xxxxxxxxxxxxx30 C7xxxxxxxxxxxxx17 B9xxxxxxxxxxxxx19 A3xxxxxxxxxxxxx88 C9xxxxxxxxxxxxx41 A5xxxxxxxxxxxxx74 A6xxxxxxxxxxxxx29 E2xxxxxxxxxxxxx58 C8xxxxxxxxxxxxx37 A6xxxxxxxxxxxxx53 E8xxxxxxxxxxxxx5 A7xxxxxxxxxxxxx32 #### C:\test>208779 Group 1 A1xxxxxxxxxxxxx42 A1xxxxxxxxxxxxx15 A7xxxxxxxxxxxxx70 A0xxxxxxxxxxxxx68 A9xxxxxxxxxxxxx24 A8xxxxxxxxxxxxx39 A0xxxxxxxxxxxxx36 A3xxxxxxxxxxxxx88 A5xxxxxxxxxxxxx74 A6xxxxxxxxxxxxx29 A6xxxxxxxxxxxxx53 A7xxxxxxxxxxxxx32 Group 2 B2xxxxxxxxxxxxx46 B8xxxxxxxxxxxxx40 B6xxxxxxxxxxxxx16 B0xxxxxxxxxxxxx76 B9xxxxxxxxxxxxx19 Group 3 C0xxxxxxxxxxxxx6 C5xxxxxxxxxxxxx9 C9xxxxxxxxxxxxx84 C2xxxxxxxxxxxxx1 C5xxxxxxxxxxxxx6 C7xxxxxxxxxxxxx17 C9xxxxxxxxxxxxx41 C8xxxxxxxxxxxxx37 Group 4 D4xxxxxxxxxxxxx22 D9xxxxxxxxxxxxx83 D0xxxxxxxxxxxxx52 Group 5 E5xxxxxxxxxxxxx47 E7xxxxxxxxxxxxx34 E3xxxxxxxxxxxxx0 E9xxxxxxxxxxxxx8 E5xxxxxxxxxxxxx57 E9xxxxxxxxxxxxx51 E0xxxxxxxxxxxxx30 E2xxxxxxxxxxxxx58 E8xxxxxxxxxxxxx5 Group 6 F3xxxxxxxxxxxxx15 F2xxxxxxxxxxxxx82 F4xxxxxxxxxxxxx33 C:\test>