my %map = ( 'a' => '4' , 'e' => '3' , 'h' => '|-|' , 'i' => '1' , 'l' => '1' , 'o' => '0' , 's' => '5' , 't' => '7' ) ; # $reverse is set by some other means @map{ values %map } = keys %map if $reverse ; while ( ) { foreach my $k ( keys %map ) { s/ $k / $map{$k} /giex; } print; }