use warnings; use strict; my @routers = ( "R1", "R2", "R3" ); my %if = ( R1 => { R1R0 => 1, R1R6 => 2, }, R2 => { R2R0 => 3, R2R6 => 1, }, R3 => { R3R61 => 2, R3R62 => 3, }, ); for my $r (@routers) { for my $i (keys %{ $if{$r} }) { print "Router $r Interface $i\n"; } } __END__ Router R1 Interface R1R0 Router R1 Interface R1R6 Router R2 Interface R2R0 Router R2 Interface R2R6 Router R3 Interface R3R61 Router R3 Interface R3R62 #### use warnings; use strict; my @routers = ( "R1", "R2", "R3" ); my %interfaces = ( R1R0 => 1, R1R6 => 2, R2R0 => 3, R2R6 => 1, R3R61 => 2, R3R62 => 3, ); for my $r (@routers) { my @ifs = grep {/^\Q$r\E\D/} keys %interfaces; for my $i (@ifs) { print "Router $r Interface $i\n"; } }