#!/usr/bin/perl

%TEXT1= (
  1 => "0x05d0 ",
  2 => "0x05d1 ",
  3 => "0x05d2 ",
  4 => "0x05d3 ",
  5 => "0x05d4 ",
  6 => "0x05d5 ",
  7 => "0x05d6 ",
  8 => "0x05d7 ",
  9 => "0x05d8 ",
  10 => "0x05d9 ",
  20 => "0x05db ",
  30 => "0x05dc ",
  40 => "0x05de ",
  50 => "0x05e0 ",
  60 => "0x05e1 ",
  70 => "0x05e2 ",
  80 => "0x05e4 ",
  90 => "0x05e6 ",
  100 => "0x05e7 ",
  200 => "0x05e8 ",
  300 => "0x05e9 ",
  400 => "0x05ea ",
  "Gersh" => "0x05f3 ",
  "Gershayim" => "0x05f4 ",
);

%TEXT2= (
  1 => "Alef ",
  2 => "Bet ",
  3 => "Gimel ",
  4 => "Dalet ",
  5 => "He ",
  6 => "Vav ",
  7 => "Zayin ",
  8 => "Het ",
  9 => "Tet ",
  10 => "Yod ",
  20 => "Kaf ",
  30 => "Lamed ",
  40 => "Mem ",
  50 => "Nun ",
  60 => "Samekh ",
  70 => "Ayin ",
  80 => "Pe ",
  90 => "Tsadi ",
  100 => "Qof ",
  200 => "Resh ",
  300 => "Shin ",
  400 => "Tav",
  "Gersh" => "Gersh ",
  "Gershayim" => "Gershayim ",
);



sub hebrewNum
{
  my($n) = @_;
 
  $total = "";

  do {                    # process three digits a time
   $cur = "";	          # text for that three digits
   $n3 = $n % 1000;       
   $d = 0;                # number of chars used in these three digits

   # look at 400, 300, 200, and 100 (Tav, Shin, Resh, Qof)
   for ( $i = 400; $i >= 100; $i -= 100)
   {
     if( $n3 >= $i)
     {
       $cur = $cur . $TEXT2{$i};
       $n3 -= $i;
       $d += 1;
     }
   }


   # look at 10 - 90
   if($n3 >= 10)
   {
     $n2 = $n3 - ($n3 %10);          # $n2 = 10, 20, 30... 90
    
     # special process for 15 and 16
     if(($n3 eq 15) || ($n3 eq 16))
     {
       $n2 = 9;
     }

     $cur = $cur . $TEXT2{$n2};
     $d += 1;
     $n3 = $n3 % 10;
   }


   if($n3 > 0)
   {
     if($d > 0)                     # output Gershayim
     {
       $cur = $cur . $TEXT2{"Gershayim"};
       $d += 1;
     }
     $cur =  $cur . $TEXT2{$n3};
     $d += 1;
   }

   if($d eq 1)                      # if we only use 1 digits, output Gersh
   {
       $cur .= $TEXT2{"Gersh"};
   }
 

   $total = $cur . $total; 
   $n /= 1000;
  } while ($n > 0);

  return $total;
}
print "1    = " . hebrewNum(1) . "\n";
print "2    = " . hebrewNum(2) . "\n";
print "3    = " . hebrewNum(3) . "\n";
print "4    = " . hebrewNum(4) . "\n";
print "5    = " . hebrewNum(5) . "\n";
print "6    = " . hebrewNum(6) . "\n";
print "7    = " . hebrewNum(7) . "\n";
print "8    = " . hebrewNum(8) . "\n";
print "9    = " . hebrewNum(9) . "\n";
print "10   = " . hebrewNum(10) . "\n";
print "11   = " . hebrewNum(11) . "\n";
print "12   = " . hebrewNum(12) . "\n";
print "13   = " . hebrewNum(13) . "\n";
print "14   = " . hebrewNum(14) . "\n";
print "15   = " . hebrewNum(15) . "\n";
print "16   = " . hebrewNum(16) . "\n";
print "17   = " . hebrewNum(17). "\n";
print "18   = " . hebrewNum(18). "\n";
print "19   = " . hebrewNum(19). "\n";
print "20   = " . hebrewNum(20) . "\n";
print "51   = " . hebrewNum(51) . "\n";
print "5759 = " . hebrewNum(5759) . "\n";

