use strict;
use warnings;

die  "Usage: $0 <text>\n" unless @ARGV;

print pronounce(join(' ',@ARGV)), "\n"; 


sub pronounce
  {
  # Buchstabieralphabet definieren
  my %PRONOUNCE = (
	'0' => 'zero',	'1' => 'one',	'2' => 'two',	'3' => 'three',
	'4' => 'four',	'5' => 'five',	'6' => 'six',	'7' => 'seven',
	'8' => 'eight',	'9' => 'nine',	'a' => 'alpha',	'b' => 'bravo',
	'c' => 'charlie',	'd' => 'delta',	'e' => 'echo',	'f' => 'foxtrot',
	'g' => 'golf',	'h' => 'hotel',	'i' => 'india',	'j' => 'juliet',
	'k' => 'kilo',	'l' => 'lima',	'm' => 'mike',	'n' => 'november',
	'o' => 'oscar',	'p' => 'papa',	'q' => 'quebec',	'r' => 'romeo',
	's' => 'sierra',	't' => 'tango',	'u' => 'uniform',	'v' => 'victor',
	'w' => 'whiskey',	'x' => 'xray',	'y' => 'yankee',	'z' => 'zulu',
	'!' => 'exclamation',	'@' => 'at',	'#' => 'hash',	'$' => 'dollar',
	'%' => 'percent',	'^' => 'caret',	'&' => 'ampersand',	'*' => 'asterisk',
	'-' => 'minus',	'_' => 'underscore',	'+' => 'plus',	'=' => 'equals',
	'(' => 'open parenthesis',	')' => 'close parenthesis',
	'{' => 'open curly brace',	'}' => 'close curly brace',	
	'[' => 'open bracket',	']' => 'close bracket',
	':' => 'colon',	';' => 'semicolon',	'"' => 'double quote',	
	'\'' => 'single quote',	'<' => 'less than',	'>' => 'greater than',	
	',' => 'comma',	'.' => 'period',	'|' => 'pipe',	'\\' => 'backslash',	
	'/' => 'slash',	'?' => 'question mark',	'`' => 'backtick',	'~' => 'tilde', 
	' ' => 'space');

	my $line = shift;
	my $result = '';
	
	# Eingabe zeichenweise verarbeiten.
  for my $char (split(//,$line))
	  {
    if ($char =~ /[A-Z]/)  # Grossbuchstabe
      { $result .= uc($PRONOUNCE{lc($char)}); }
    else                   # Kleinbuchstabe/Sonderzeichen
      { $result .= $PRONOUNCE{$char}; }
    $result .= ' ';        # Leerzeichen nach jedem Zeichen
    }
	return $result;
  }