#!/usr/bin/perl use utf8; binmode STDOUT, ":utf8"; %english2dari = ( "wise" => "خردمند", "was" => "بود", "God" => "خداوند"); %dari2english = reverse %english2dari; do{ print "Give a sentence in Dari or English:\n"; chomp ($line = <>); if ($line =~ /\w/){ $line =~ s/^\s*//; $line =~ s/\s*$//; @words = split /\s+/, $line; @words = reverse @words; #word order R-> L but problem remains w/letters L->R foreach $word(@words){ if (exists ($english2dari{$word})){ $dariword = reverse $english2dari{$word} =~ m/\X/g; #should (dnw)reverse how Dari words print, so it's R->L print " $dariword " ; } elsif (exists ($dari2english{$word})) { print " $word "; #this doesn't seem to work at all } else { print " $word "; #unknown - doesn't work either } } } print "\n"; }