#!perl

our $DATE = '2017-05-04'; # DATE
our $VERSION = '0.001'; # VERSION

use 5.010001;
use strict;
use warnings;

use Getopt::Long;

my %Opts = (
);

my %Combs = (
    'grave-accent' => "\x{0300}",
    overline => "\x{0305}",
## ◌̀ - U+00300 - COMBINING GRAVE ACCENT
# ◌́ - U+00301 - COMBINING ACUTE ACCENT
# ◌̂ - U+00302 - COMBINING CIRCUMFLEX ACCENT
# ◌̃ - U+00303 - COMBINING TILDE
# ◌̄ - U+00304 - COMBINING MACRON
## ◌̅ - U+00305 - COMBINING OVERLINE
# ◌̆ - U+00306 - COMBINING BREVE
# ◌̇ - U+00307 - COMBINING DOT ABOVE
# ◌̈ - U+00308 - COMBINING DIAERESIS
# ◌̉ - U+00309 - COMBINING HOOK ABOVE
# ◌̊ - U+0030A - COMBINING RING ABOVE
# ◌̋ - U+0030B - COMBINING DOUBLE ACUTE ACCENT
# ◌̌ - U+0030C - COMBINING CARON
# ◌̍ - U+0030D - COMBINING VERTICAL LINE ABOVE
# ◌̎ - U+0030E - COMBINING DOUBLE VERTICAL LINE ABOVE
# ◌̏ - U+0030F - COMBINING DOUBLE GRAVE ACCENT
# ◌̐ - U+00310 - COMBINING CANDRABINDU
# ◌̑ - U+00311 - COMBINING INVERTED BREVE
# ◌̒ - U+00312 - COMBINING TURNED COMMA ABOVE
# ◌̓ - U+00313 - COMBINING COMMA ABOVE
# ◌̔ - U+00314 - COMBINING REVERSED COMMA ABOVE
# ◌̕ - U+00315 - COMBINING COMMA ABOVE RIGHT
# ◌̖ - U+00316 - COMBINING GRAVE ACCENT BELOW
# ◌̗ - U+00317 - COMBINING ACUTE ACCENT BELOW
# ◌̘ - U+00318 - COMBINING LEFT TACK BELOW
# ◌̙ - U+00319 - COMBINING RIGHT TACK BELOW
# ◌̚ - U+0031A - COMBINING LEFT ANGLE ABOVE
# ◌̛ - U+0031B - COMBINING HORN
# ◌̜ - U+0031C - COMBINING LEFT HALF RING BELOW
# ◌̝ - U+0031D - COMBINING UP TACK BELOW
# ◌̞ - U+0031E - COMBINING DOWN TACK BELOW
# ◌̟ - U+0031F - COMBINING PLUS SIGN BELOW
# ◌̠ - U+00320 - COMBINING MINUS SIGN BELOW
# ◌̡ - U+00321 - COMBINING PALATALIZED HOOK BELOW
# ◌̢ - U+00322 - COMBINING RETROFLEX HOOK BELOW
# ◌̣ - U+00323 - COMBINING DOT BELOW
# ◌̤ - U+00324 - COMBINING DIAERESIS BELOW
# ◌̥ - U+00325 - COMBINING RING BELOW
# ◌̦ - U+00326 - COMBINING COMMA BELOW
# ◌̧ - U+00327 - COMBINING CEDILLA
# ◌̨ - U+00328 - COMBINING OGONEK
# ◌̩ - U+00329 - COMBINING VERTICAL LINE BELOW
# ◌̪ - U+0032A - COMBINING BRIDGE BELOW
# ◌̫ - U+0032B - COMBINING INVERTED DOUBLE ARCH BELOW
# ◌̬ - U+0032C - COMBINING CARON BELOW
# ◌̭ - U+0032D - COMBINING CIRCUMFLEX ACCENT BELOW
# ◌̮ - U+0032E - COMBINING BREVE BELOW
# ◌̯ - U+0032F - COMBINING INVERTED BREVE BELOW
# ◌̰ - U+00330 - COMBINING TILDE BELOW
# ◌̱ - U+00331 - COMBINING MACRON BELOW
# ◌̲ - U+00332 - COMBINING LOW LINE
# ◌̳ - U+00333 - COMBINING DOUBLE LOW LINE
# ◌̴ - U+00334 - COMBINING TILDE OVERLAY
# ◌̵ - U+00335 - COMBINING SHORT STROKE OVERLAY
# ◌̶ - U+00336 - COMBINING LONG STROKE OVERLAY
# ◌̷ - U+00337 - COMBINING SHORT SOLIDUS OVERLAY
# ◌̸ - U+00338 - COMBINING LONG SOLIDUS OVERLAY
# ◌̹ - U+00339 - COMBINING RIGHT HALF RING BELOW
# ◌̺ - U+0033A - COMBINING INVERTED BRIDGE BELOW
# ◌̻ - U+0033B - COMBINING SQUARE BELOW
# ◌̼ - U+0033C - COMBINING SEAGULL BELOW
# ◌̽ - U+0033D - COMBINING X ABOVE
# ◌̾ - U+0033E - COMBINING VERTICAL TILDE
# ◌̿ - U+0033F - COMBINING DOUBLE OVERLINE
# ◌̀ - U+00340 - COMBINING GRAVE TONE MARK
# ◌́ - U+00341 - COMBINING ACUTE TONE MARK
# ◌͂ - U+00342 - COMBINING GREEK PERISPOMENI
# ◌̓ - U+00343 - COMBINING GREEK KORONIS
# ◌̈́ - U+00344 - COMBINING GREEK DIALYTIKA TONOS
# ◌ͅ - U+00345 - COMBINING GREEK YPOGEGRAMMENI
# ◌͆ - U+00346 - COMBINING BRIDGE ABOVE
# ◌͇ - U+00347 - COMBINING EQUALS SIGN BELOW
# ◌͈ - U+00348 - COMBINING DOUBLE VERTICAL LINE BELOW
# ◌͉ - U+00349 - COMBINING LEFT ANGLE BELOW
# ◌͊ - U+0034A - COMBINING NOT TILDE ABOVE
# ◌͋ - U+0034B - COMBINING HOMOTHETIC ABOVE
# ◌͌ - U+0034C - COMBINING ALMOST EQUAL TO ABOVE
# ◌͍ - U+0034D - COMBINING LEFT RIGHT ARROW BELOW
# ◌͎ - U+0034E - COMBINING UPWARDS ARROW BELOW
# ◌͏ - U+0034F - COMBINING GRAPHEME JOINER
# ◌͐ - U+00350 - COMBINING RIGHT ARROWHEAD ABOVE
# ◌͑ - U+00351 - COMBINING LEFT HALF RING ABOVE
# ◌͒ - U+00352 - COMBINING FERMATA
# ◌͓ - U+00353 - COMBINING X BELOW
# ◌͔ - U+00354 - COMBINING LEFT ARROWHEAD BELOW
# ◌͕ - U+00355 - COMBINING RIGHT ARROWHEAD BELOW
# ◌͖ - U+00356 - COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW
# ◌͗ - U+00357 - COMBINING RIGHT HALF RING ABOVE
# ◌͘ - U+00358 - COMBINING DOT ABOVE RIGHT
# ◌͙ - U+00359 - COMBINING ASTERISK BELOW
# ◌͚ - U+0035A - COMBINING DOUBLE RING BELOW
# ◌͛ - U+0035B - COMBINING ZIGZAG ABOVE
# ◌͜ - U+0035C - COMBINING DOUBLE BREVE BELOW
# ◌͝ - U+0035D - COMBINING DOUBLE BREVE
# ◌͞ - U+0035E - COMBINING DOUBLE MACRON
# ◌͟ - U+0035F - COMBINING DOUBLE MACRON BELOW
# ◌͠ - U+00360 - COMBINING DOUBLE TILDE
# ◌͡ - U+00361 - COMBINING DOUBLE INVERTED BREVE
# ◌͢ - U+00362 - COMBINING DOUBLE RIGHTWARDS ARROW BELOW
# ◌ͣ - U+00363 - COMBINING LATIN SMALL LETTER A
# ◌ͤ - U+00364 - COMBINING LATIN SMALL LETTER E
# ◌ͥ - U+00365 - COMBINING LATIN SMALL LETTER I
# ◌ͦ - U+00366 - COMBINING LATIN SMALL LETTER O
# ◌ͧ - U+00367 - COMBINING LATIN SMALL LETTER U
# ◌ͨ - U+00368 - COMBINING LATIN SMALL LETTER C
# ◌ͩ - U+00369 - COMBINING LATIN SMALL LETTER D
# ◌ͪ - U+0036A - COMBINING LATIN SMALL LETTER H
# ◌ͫ - U+0036B - COMBINING LATIN SMALL LETTER M
# ◌ͬ - U+0036C - COMBINING LATIN SMALL LETTER R
# ◌ͭ - U+0036D - COMBINING LATIN SMALL LETTER T
# ◌ͮ - U+0036E - COMBINING LATIN SMALL LETTER V
# ◌ͯ - U+0036F - COMBINING LATIN SMALL LETTER X
# ◌҃ - U+00483 - COMBINING CYRILLIC TITLO
# ◌҄ - U+00484 - COMBINING CYRILLIC PALATALIZATION
# ◌҅ - U+00485 - COMBINING CYRILLIC DASIA PNEUMATA
# ◌҆ - U+00486 - COMBINING CYRILLIC PSILI PNEUMATA
# ◌҇ - U+00487 - COMBINING CYRILLIC POKRYTIE
# ◌҈ - U+00488 - COMBINING CYRILLIC HUNDRED THOUSANDS SIGN
# ◌҉ - U+00489 - COMBINING CYRILLIC MILLIONS SIGN
# ◌᪰ - U+01AB0 - COMBINING DOUBLED CIRCUMFLEX ACCENT
# ◌᪱ - U+01AB1 - COMBINING DIAERESIS-RING
# ◌᪲ - U+01AB2 - COMBINING INFINITY
# ◌᪳ - U+01AB3 - COMBINING DOWNWARDS ARROW
# ◌᪴ - U+01AB4 - COMBINING TRIPLE DOT
# ◌᪵ - U+01AB5 - COMBINING X-X BELOW
# ◌᪶ - U+01AB6 - COMBINING WIGGLY LINE BELOW
# ◌᪷ - U+01AB7 - COMBINING OPEN MARK BELOW
# ◌᪸ - U+01AB8 - COMBINING DOUBLE OPEN MARK BELOW
# ◌᪹ - U+01AB9 - COMBINING LIGHT CENTRALIZATION STROKE BELOW
# ◌᪺ - U+01ABA - COMBINING STRONG CENTRALIZATION STROKE BELOW
# ◌᪻ - U+01ABB - COMBINING PARENTHESES ABOVE
# ◌᪼ - U+01ABC - COMBINING DOUBLE PARENTHESES ABOVE
# ◌᪽ - U+01ABD - COMBINING PARENTHESES BELOW
# ◌᪾ - U+01ABE - COMBINING PARENTHESES OVERLAY
# ◌᷀ - U+01DC0 - COMBINING DOTTED GRAVE ACCENT
# ◌᷁ - U+01DC1 - COMBINING DOTTED ACUTE ACCENT
# ◌᷂ - U+01DC2 - COMBINING SNAKE BELOW
# ◌᷃ - U+01DC3 - COMBINING SUSPENSION MARK
# ◌᷄ - U+01DC4 - COMBINING MACRON-ACUTE
# ◌᷅ - U+01DC5 - COMBINING GRAVE-MACRON
# ◌᷆ - U+01DC6 - COMBINING MACRON-GRAVE
# ◌᷇ - U+01DC7 - COMBINING ACUTE-MACRON
# ◌᷈ - U+01DC8 - COMBINING GRAVE-ACUTE-GRAVE
# ◌᷉ - U+01DC9 - COMBINING ACUTE-GRAVE-ACUTE
# ◌᷊ - U+01DCA - COMBINING LATIN SMALL LETTER R BELOW
# ◌᷋ - U+01DCB - COMBINING BREVE-MACRON
# ◌᷌ - U+01DCC - COMBINING MACRON-BREVE
# ◌᷍ - U+01DCD - COMBINING DOUBLE CIRCUMFLEX ABOVE
# ◌᷎ - U+01DCE - COMBINING OGONEK ABOVE
# ◌᷏ - U+01DCF - COMBINING ZIGZAG BELOW
# ◌᷐ - U+01DD0 - COMBINING IS BELOW
# ◌᷑ - U+01DD1 - COMBINING UR ABOVE
# ◌᷒ - U+01DD2 - COMBINING US ABOVE
# ◌ᷓ - U+01DD3 - COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE
# ◌ᷔ - U+01DD4 - COMBINING LATIN SMALL LETTER AE
# ◌ᷕ - U+01DD5 - COMBINING LATIN SMALL LETTER AO
# ◌ᷖ - U+01DD6 - COMBINING LATIN SMALL LETTER AV
# ◌ᷗ - U+01DD7 - COMBINING LATIN SMALL LETTER C CEDILLA
# ◌ᷘ - U+01DD8 - COMBINING LATIN SMALL LETTER INSULAR D
# ◌ᷙ - U+01DD9 - COMBINING LATIN SMALL LETTER ETH
# ◌ᷚ - U+01DDA - COMBINING LATIN SMALL LETTER G
# ◌ᷛ - U+01DDB - COMBINING LATIN LETTER SMALL CAPITAL G
# ◌ᷜ - U+01DDC - COMBINING LATIN SMALL LETTER K
# ◌ᷝ - U+01DDD - COMBINING LATIN SMALL LETTER L
# ◌ᷞ - U+01DDE - COMBINING LATIN LETTER SMALL CAPITAL L
# ◌ᷟ - U+01DDF - COMBINING LATIN LETTER SMALL CAPITAL M
# ◌ᷠ - U+01DE0 - COMBINING LATIN SMALL LETTER N
# ◌ᷡ - U+01DE1 - COMBINING LATIN LETTER SMALL CAPITAL N
# ◌ᷢ - U+01DE2 - COMBINING LATIN LETTER SMALL CAPITAL R
# ◌ᷣ - U+01DE3 - COMBINING LATIN SMALL LETTER R ROTUNDA
# ◌ᷤ - U+01DE4 - COMBINING LATIN SMALL LETTER S
# ◌ᷥ - U+01DE5 - COMBINING LATIN SMALL LETTER LONG S
# ◌ᷦ - U+01DE6 - COMBINING LATIN SMALL LETTER Z
# ◌ᷧ - U+01DE7 - COMBINING LATIN SMALL LETTER ALPHA
# ◌ᷨ - U+01DE8 - COMBINING LATIN SMALL LETTER B
# ◌ᷩ - U+01DE9 - COMBINING LATIN SMALL LETTER BETA
# ◌ᷪ - U+01DEA - COMBINING LATIN SMALL LETTER SCHWA
# ◌ᷫ - U+01DEB - COMBINING LATIN SMALL LETTER F
# ◌ᷬ - U+01DEC - COMBINING LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE
# ◌ᷭ - U+01DED - COMBINING LATIN SMALL LETTER O WITH LIGHT CENTRALIZATION STROKE
# ◌ᷮ - U+01DEE - COMBINING LATIN SMALL LETTER P
# ◌ᷯ - U+01DEF - COMBINING LATIN SMALL LETTER ESH
# ◌ᷰ - U+01DF0 - COMBINING LATIN SMALL LETTER U WITH LIGHT CENTRALIZATION STROKE
# ◌ᷱ - U+01DF1 - COMBINING LATIN SMALL LETTER W
# ◌ᷲ - U+01DF2 - COMBINING LATIN SMALL LETTER A WITH DIAERESIS
# ◌ᷳ - U+01DF3 - COMBINING LATIN SMALL LETTER O WITH DIAERESIS
# ◌ᷴ - U+01DF4 - COMBINING LATIN SMALL LETTER U WITH DIAERESIS
# ◌᷵ - U+01DF5 - COMBINING UP TACK ABOVE
# ◌᷼ - U+01DFC - COMBINING DOUBLE INVERTED BREVE BELOW
# ◌᷽ - U+01DFD - COMBINING ALMOST EQUAL TO BELOW
# ◌᷾ - U+01DFE - COMBINING LEFT ARROWHEAD ABOVE
# ◌᷿ - U+01DFF - COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
# ◌⃐ - U+020D0 - COMBINING LEFT HARPOON ABOVE
# ◌⃑ - U+020D1 - COMBINING RIGHT HARPOON ABOVE
# ◌⃒ - U+020D2 - COMBINING LONG VERTICAL LINE OVERLAY
# ◌⃓ - U+020D3 - COMBINING SHORT VERTICAL LINE OVERLAY
# ◌⃔ - U+020D4 - COMBINING ANTICLOCKWISE ARROW ABOVE
# ◌⃕ - U+020D5 - COMBINING CLOCKWISE ARROW ABOVE
# ◌⃖ - U+020D6 - COMBINING LEFT ARROW ABOVE
# ◌⃗ - U+020D7 - COMBINING RIGHT ARROW ABOVE
# ◌⃘ - U+020D8 - COMBINING RING OVERLAY
# ◌⃙ - U+020D9 - COMBINING CLOCKWISE RING OVERLAY
# ◌⃚ - U+020DA - COMBINING ANTICLOCKWISE RING OVERLAY
# ◌⃛ - U+020DB - COMBINING THREE DOTS ABOVE
# ◌⃜ - U+020DC - COMBINING FOUR DOTS ABOVE
# ◌⃝ - U+020DD - COMBINING ENCLOSING CIRCLE
# ◌⃞ - U+020DE - COMBINING ENCLOSING SQUARE
# ◌⃟ - U+020DF - COMBINING ENCLOSING DIAMOND
# ◌⃠ - U+020E0 - COMBINING ENCLOSING CIRCLE BACKSLASH
# ◌⃡ - U+020E1 - COMBINING LEFT RIGHT ARROW ABOVE
# ◌⃢ - U+020E2 - COMBINING ENCLOSING SCREEN
# ◌⃣ - U+020E3 - COMBINING ENCLOSING KEYCAP
# ◌⃤ - U+020E4 - COMBINING ENCLOSING UPWARD POINTING TRIANGLE
# ◌⃥ - U+020E5 - COMBINING REVERSE SOLIDUS OVERLAY
# ◌⃦ - U+020E6 - COMBINING DOUBLE VERTICAL STROKE OVERLAY
# ◌⃧ - U+020E7 - COMBINING ANNUITY SYMBOL
# ◌⃨ - U+020E8 - COMBINING TRIPLE UNDERDOT
# ◌⃩ - U+020E9 - COMBINING WIDE BRIDGE ABOVE
# ◌⃪ - U+020EA - COMBINING LEFTWARDS ARROW OVERLAY
# ◌⃫ - U+020EB - COMBINING LONG DOUBLE SOLIDUS OVERLAY
# ◌⃬ - U+020EC - COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS
# ◌⃭ - U+020ED - COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS
# ◌⃮ - U+020EE - COMBINING LEFT ARROW BELOW
# ◌⃯ - U+020EF - COMBINING RIGHT ARROW BELOW
# ◌⃰ - U+020F0 - COMBINING ASTERISK ABOVE
# ◌ⷠ - U+02DE0 - COMBINING CYRILLIC LETTER BE
# ◌ⷡ - U+02DE1 - COMBINING CYRILLIC LETTER VE
# ◌ⷢ - U+02DE2 - COMBINING CYRILLIC LETTER GHE
# ◌ⷣ - U+02DE3 - COMBINING CYRILLIC LETTER DE
# ◌ⷤ - U+02DE4 - COMBINING CYRILLIC LETTER ZHE
# ◌ⷥ - U+02DE5 - COMBINING CYRILLIC LETTER ZE
# ◌ⷦ - U+02DE6 - COMBINING CYRILLIC LETTER KA
# ◌ⷧ - U+02DE7 - COMBINING CYRILLIC LETTER EL
# ◌ⷨ - U+02DE8 - COMBINING CYRILLIC LETTER EM
# ◌ⷩ - U+02DE9 - COMBINING CYRILLIC LETTER EN
# ◌ⷪ - U+02DEA - COMBINING CYRILLIC LETTER O
# ◌ⷫ - U+02DEB - COMBINING CYRILLIC LETTER PE
# ◌ⷬ - U+02DEC - COMBINING CYRILLIC LETTER ER
# ◌ⷭ - U+02DED - COMBINING CYRILLIC LETTER ES
# ◌ⷮ - U+02DEE - COMBINING CYRILLIC LETTER TE
# ◌ⷯ - U+02DEF - COMBINING CYRILLIC LETTER HA
# ◌ⷰ - U+02DF0 - COMBINING CYRILLIC LETTER TSE
# ◌ⷱ - U+02DF1 - COMBINING CYRILLIC LETTER CHE
# ◌ⷲ - U+02DF2 - COMBINING CYRILLIC LETTER SHA
# ◌ⷳ - U+02DF3 - COMBINING CYRILLIC LETTER SHCHA
# ◌ⷴ - U+02DF4 - COMBINING CYRILLIC LETTER FITA
# ◌ⷵ - U+02DF5 - COMBINING CYRILLIC LETTER ES-TE
# ◌ⷶ - U+02DF6 - COMBINING CYRILLIC LETTER A
# ◌ⷷ - U+02DF7 - COMBINING CYRILLIC LETTER IE
# ◌ⷸ - U+02DF8 - COMBINING CYRILLIC LETTER DJERV
# ◌ⷹ - U+02DF9 - COMBINING CYRILLIC LETTER MONOGRAPH UK
# ◌ⷺ - U+02DFA - COMBINING CYRILLIC LETTER YAT
# ◌ⷻ - U+02DFB - COMBINING CYRILLIC LETTER YU
# ◌ⷼ - U+02DFC - COMBINING CYRILLIC LETTER IOTIFIED A
# ◌ⷽ - U+02DFD - COMBINING CYRILLIC LETTER LITTLE YUS
# ◌ⷾ - U+02DFE - COMBINING CYRILLIC LETTER BIG YUS
# ◌ⷿ - U+02DFF - COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
# ◌゙ - U+03099 - COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
# ◌゚ - U+0309A - COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
# ◌꙯ - U+0A66F - COMBINING CYRILLIC VZMET
# ◌꙰ - U+0A670 - COMBINING CYRILLIC TEN MILLIONS SIGN
# ◌꙱ - U+0A671 - COMBINING CYRILLIC HUNDRED MILLIONS SIGN
# ◌꙲ - U+0A672 - COMBINING CYRILLIC THOUSAND MILLIONS SIGN
# ◌ꙴ - U+0A674 - COMBINING CYRILLIC LETTER UKRAINIAN IE
# ◌ꙵ - U+0A675 - COMBINING CYRILLIC LETTER I
# ◌ꙶ - U+0A676 - COMBINING CYRILLIC LETTER YI
# ◌ꙷ - U+0A677 - COMBINING CYRILLIC LETTER U
# ◌ꙸ - U+0A678 - COMBINING CYRILLIC LETTER HARD SIGN
# ◌ꙹ - U+0A679 - COMBINING CYRILLIC LETTER YERU
# ◌ꙺ - U+0A67A - COMBINING CYRILLIC LETTER SOFT SIGN
# ◌ꙻ - U+0A67B - COMBINING CYRILLIC LETTER OMEGA
# ◌꙼ - U+0A67C - COMBINING CYRILLIC KAVYKA
# ◌꙽ - U+0A67D - COMBINING CYRILLIC PAYEROK
# ◌ꚞ - U+0A69E - COMBINING CYRILLIC LETTER EF
# ◌ꚟ - U+0A69F - COMBINING CYRILLIC LETTER IOTIFIED E
# ◌꣠ - U+0A8E0 - COMBINING DEVANAGARI DIGIT ZERO
# ◌꣡ - U+0A8E1 - COMBINING DEVANAGARI DIGIT ONE
# ◌꣢ - U+0A8E2 - COMBINING DEVANAGARI DIGIT TWO
# ◌꣣ - U+0A8E3 - COMBINING DEVANAGARI DIGIT THREE
# ◌꣤ - U+0A8E4 - COMBINING DEVANAGARI DIGIT FOUR
# ◌꣥ - U+0A8E5 - COMBINING DEVANAGARI DIGIT FIVE
# ◌꣦ - U+0A8E6 - COMBINING DEVANAGARI DIGIT SIX
# ◌꣧ - U+0A8E7 - COMBINING DEVANAGARI DIGIT SEVEN
# ◌꣨ - U+0A8E8 - COMBINING DEVANAGARI DIGIT EIGHT
# ◌꣩ - U+0A8E9 - COMBINING DEVANAGARI DIGIT NINE
# ◌꣪ - U+0A8EA - COMBINING DEVANAGARI LETTER A
# ◌꣫ - U+0A8EB - COMBINING DEVANAGARI LETTER U
# ◌꣬ - U+0A8EC - COMBINING DEVANAGARI LETTER KA
# ◌꣭ - U+0A8ED - COMBINING DEVANAGARI LETTER NA
# ◌꣮ - U+0A8EE - COMBINING DEVANAGARI LETTER PA
# ◌꣯ - U+0A8EF - COMBINING DEVANAGARI LETTER RA
# ◌꣰ - U+0A8F0 - COMBINING DEVANAGARI LETTER VI
# ◌꣱ - U+0A8F1 - COMBINING DEVANAGARI SIGN AVAGRAHA
# ◌︠ - U+0FE20 - COMBINING LIGATURE LEFT HALF
# ◌︡ - U+0FE21 - COMBINING LIGATURE RIGHT HALF
# ◌︢ - U+0FE22 - COMBINING DOUBLE TILDE LEFT HALF
# ◌︣ - U+0FE23 - COMBINING DOUBLE TILDE RIGHT HALF
# ◌︤ - U+0FE24 - COMBINING MACRON LEFT HALF
# ◌︥ - U+0FE25 - COMBINING MACRON RIGHT HALF
# ◌︦ - U+0FE26 - COMBINING CONJOINING MACRON
# ◌︧ - U+0FE27 - COMBINING LIGATURE LEFT HALF BELOW
# ◌︨ - U+0FE28 - COMBINING LIGATURE RIGHT HALF BELOW
# ◌︩ - U+0FE29 - COMBINING TILDE LEFT HALF BELOW
# ◌︪ - U+0FE2A - COMBINING TILDE RIGHT HALF BELOW
# ◌︫ - U+0FE2B - COMBINING MACRON LEFT HALF BELOW
# ◌︬ - U+0FE2C - COMBINING MACRON RIGHT HALF BELOW
# ◌︭ - U+0FE2D - COMBINING CONJOINING MACRON BELOW
# ◌︮ - U+0FE2E - COMBINING CYRILLIC TITLO LEFT HALF
# ◌︯ - U+0FE2F - COMBINING CYRILLIC TITLO RIGHT HALF
# ◌𐍶 - U+10376 - COMBINING OLD PERMIC LETTER AN
# ◌𐍷 - U+10377 - COMBINING OLD PERMIC LETTER DOI
# ◌𐍸 - U+10378 - COMBINING OLD PERMIC LETTER ZATA
# ◌𐍹 - U+10379 - COMBINING OLD PERMIC LETTER NENOE
# ◌𐍺 - U+1037A - COMBINING OLD PERMIC LETTER SII
# ◌𑍦 - U+11366 - COMBINING GRANTHA DIGIT ZERO
# ◌𑍧 - U+11367 - COMBINING GRANTHA DIGIT ONE
# ◌𑍨 - U+11368 - COMBINING GRANTHA DIGIT TWO
# ◌𑍩 - U+11369 - COMBINING GRANTHA DIGIT THREE
# ◌𑍪 - U+1136A - COMBINING GRANTHA DIGIT FOUR
# ◌𑍫 - U+1136B - COMBINING GRANTHA DIGIT FIVE
# ◌𑍬 - U+1136C - COMBINING GRANTHA DIGIT SIX
# ◌𑍰 - U+11370 - COMBINING GRANTHA LETTER A
# ◌𑍱 - U+11371 - COMBINING GRANTHA LETTER KA
# ◌𑍲 - U+11372 - COMBINING GRANTHA LETTER NA
# ◌𑍳 - U+11373 - COMBINING GRANTHA LETTER VI
# ◌𑍴 - U+11374 - COMBINING GRANTHA LETTER PA
# ◌𝉂 - U+1D242 - COMBINING GREEK MUSICAL TRISEME
# ◌𝉃 - U+1D243 - COMBINING GREEK MUSICAL TETRASEME
# ◌𝉄 - U+1D244 - COMBINING GREEK MUSICAL PENTASEME
);

sub _print_spec {
    my $spec = shift;
    my ($char) = $spec =~ /(.*?)(?:\+|\z)/;
    print $char;
    my @combs = $spec =~ /\+([^+]*)/g;
    for my $comb (@combs) {
        $comb = lc($comb);
        die "Unknown combining character '$comb'\n" unless $Combs{$comb};
        print $Combs{$comb};
    }
}

sub parse_cmdline {
    my $res = GetOptions(
        'help|h'           => sub {
            print <<USAGE;
Usage:
  unicomb [OPTION]... <SPEC>...
  unicomb --help, -h
  unicomb --version, -v
Examples:
  # To print x-bar (x with an overline):
  unicomb x+overline
Options:
  --list, -l  List all available combining characters.

For more details, see the manpage/documentation.
USAGE
            exit 0;
        },
        'version|v' => sub {
            no warnings 'once';
            say "unicomb version ", ($main::VERSION // 'dev');
            exit 0;
        },
        'list|l' => sub {
            for (sort keys %Combs) {
                say;
            }
            exit 0;
        },
    );
    exit 99 if !$res;
    unless (@ARGV) {
        warn "Please specify one or more characters\n";
        exit 99;
    }
}

sub run {
    binmode STDOUT, ":utf8";
    for my $spec (@ARGV) {
        _print_spec($spec);
    }
    print "\n";
}

# MAIN

parse_cmdline();
run();

1;
# ABSTRACT: Print Unicode character with combining character
# PODNAME: unicomb

__END__

=pod

=encoding UTF-8

=head1 NAME

unicomb - Print Unicode character with combining character

=head1 VERSION

This document describes version 0.001 of unicomb (from Perl distribution App-unicomb), released on 2017-05-04.

=head1 SYNOPSIS

 % unicomb [OPTION]... <SPEC>...

Examples:

 # Print x-bar (x with overline)
 unicomb x+overline

=head1 DESCRIPTION

This utility is a slight convenience for printing Unicode character(s) each with
zero or more combining characters.

To print a character with another combining character, you can: 1) look up the
combining character using L<uni> from L<App::Uni>, e.g.:

 % uni combining | grep -i over
 % perl -CO -E'say "x\x{0305}"'

or:

 % perl -CO -E'say "x\x{COMBINING OVERLINE}"'

Using this utility, you can also use:

 % unicomb x+overline

=head1 EXIT CODES

0 on success.

99 on command-line options error.

=head1 OPTIONS

=over

=item * --list, -l

List all available combining characters.

=back

=head1 FAQ

=head1 HOMEPAGE

Please visit the project's homepage at L<https://metacpan.org/release/App-unicomb>.

=head1 SOURCE

Source repository is at L<https://github.com/perlancar/perl-App-unicomb>.

=head1 BUGS

Please report any bugs or feature requests on the bugtracker website L<https://rt.cpan.org/Public/Dist/Display.html?Name=App-unicomb>

When submitting a bug or request, please include a test-file or a
patch to an existing test-file that illustrates the bug or desired
feature.

=head1 SEE ALSO

L<uni> from L<App::Uni>

=head1 AUTHOR

perlancar <perlancar@cpan.org>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by perlancar@cpan.org.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut
