my( %hash, @order ); # assume these are initialized # 1 - map my @numbers = map{ exists $hash{ $_ } ? $hash{ $_ } : 999 } @order; # 2 - foreach my @numbers; foreach my $name ( @order ) { push @numbers, ( exists $hash{ $name } ? $hash{ $name } : 999 ); }