my @pdu_nums = 3 .. 8; if ( $order ) { @pdu_nums = reverse @pdu_nums; } # You could check that @nodes >= @pdu_nums here, too. foreach my $pdu_num ( @pdu_nums ) { my $node = shift @nodes; unless ( $node ) { die "A horrible death!\n"; } $map{ $node} = join '', $pdu, '[', $pdu_num, '}'; }