#!/usr/bin/perl # Copyright 2008 Michael J. Micek Freely redistribute # under the GNU Public License (GPL v2 or later) # written for perl 5.8.8 use strict; use utf8; use Getopt::Long; use Pod::Usage; our $TRANS; { # Joey Hess' # $FORWARD = q*[]{}<>()a-y1-9,!.?`'*; # $REVERSE = q*][}{><)(eq)paj6y!fk7wuodbjsfn^mxhl2Eh59L86`i'%,*; # from Enterprise_Cat # $FORWARD = q*abcdefghijklmnopqrstuvwxyz?!.(),'*; # $REVERSE = q*ɐqɔpəɟɓɥɪʆʞʅɯuodbɹsʇnʌʍxʎz¿¡·)(',*; my $all_ups = ''; my $all_sdn = ''; ########################## # # IMPROVE THIS SECTION # # # Basic Latin (ASCII) # # ASCII rotationally symmetric # #$%+-=/ # 0258 # :| # HINOSXZ # osxz # \ # ASCII lowercase $all_ups .= q*abcdefghijklmnrtvwy*; # osxz↑ pqu↓ $all_sdn .= q*ɐqɔpǝɟɓɥᴉʆʞʅɯuɹʇʌʍʎ*; # əᵷ # ASCII punctuation $all_ups .= q/!"'&(*,.;↓ $all_sdn .= q/¡ˮˌ⅋)⁎‘·؛>¿Ͽ]⌄˛}˷/; # ǀǁǃB˸˯ⓔӘ # ASCII numbers $all_ups .= q*13467*; # 0258↑ $all_sdn .= q*ƮƐի9∠*; # L # ASCII Uppercase $all_ups .= q*ABCDEFGJKLMPQRTUVY*; # EHILNOSXZ↑ W↓ $all_sdn .= q*∀ᗺƆᗭƎℲ⅁ՐЯ⅂WԀÒᴚ⊥ȠΛ⅄*; # ᗺϽᗡɧɘƜ∩Ո⋂ # Unresolved ASCII # [none] # # Latin-1 Supplement # # Latin1 rotationally symmetric # ¤¦§­ # ר÷ø # Latin1 punctuation $all_ups .= q*«¬¯°±´*; # ¡¤¦§­¿·↑ ¸»↓ $all_sdn .= q*»˾ˍₒ∓¸*; # ˳∘⎔ˏ # Latin1 $all_ups .= q**; # Ò↑ $all_sdn .= q**; # # Unresolved Latin1 # ¢£¥¨©ª®²³µ¶¹º¼½¾ # ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÓÔÕÖÙÚÛÜÝÞß # àáâãäåæçèéêëìíîïðñòóôõöùúûüýþÿ # # Latin Extended-A # # Unresolved Latin+A # ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğ # ĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿ # ŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞş # ŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ # # Latin Extended-B # # ƆƎƮ↑ # Unresolved Latin+B # ƀƁƂƃƄƅƇƈƉƊƋƌƍƏƐƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟ # ƠơƢƣƤƥƦƧƨƩƪƫƬƭƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿ # ǀǁǂǃDŽDždžLJLjljNJNjnjǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǝǞǟ # ǠǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰDZDzdzǴǵǶǷǸǹǺǻǼǽǾǿ # ȀȁȂȃȄȅȆȇȈȉȊȋȌȍȎȏȐȑȒȓȔȕȖȗȘșȚțȜȝȞȟ # ȠȡȢȣȤȥȦȧȨȩȪȫȬȭȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿ # ɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏ # # IPA Extensions # # IPA rotationally symmetric # ɪʘʜ # IPA lowercase # ɐɔəɟɓɥʆʞʅɯɹʇʌʍʎ↑ # Unresolved IPA # 5 ɑɒɕɖɗɘɚɛɜɝɞ # 6 ɠɡɢɣɤɦɨɩɫɬɭɮ # 7 ɰɱɲɳɴɵɶɷɸɺɻɼɽɾɿ # 8 ʀʁʂʃʄʆʈʉʊʋʏ # 9 ʐʑʒʓʔʕʖʗʙʚʛʝʞʟ # A ʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯ # # Spacing [non-combining] Modifier Letters # # Modifiers # ˳↑ # Unresolved Modifiers # ʰʱʲʳʴʵʶʷʸʹʺʻʼʽʾʿ # ˀˁ˂˃˄˅ˆˇˈˉˊˋˍˎˏːˑ˒˓˔˕˖˗˘˙˚˛˜˝˞˟ # ˠˡˢˣˤ˥˦˧˨˩˪˫ˬ˭ˮ˰˱˲˴˵˶˸˹˺˻˼˽˾˿ # # Greek and Coptic # # Unresolved Greek # ʹ͵ͺͻͼͽ; # ΄΅Ά·ΈΉΊΌΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟ # ΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξο # πρςστυφχψωϊϋόύώϐϑϒϓϔϕϖϗϘϙϚϛϜϝϞϟ # ϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϰϱϲϳϴϵ϶ϷϸϹϺϻϼϽϾϿ # # Latin Extended Additional # # Unresolved Latin++ # ḀḁḂḃḄḅḆḇḈḉḊḋḌḍḎḏḐḑḒḓḔḕḖḗḘḙḚḛḜḝḞḟ # ḠḡḢḣḤḥḦḧḨḩḪḫḬḭḮḯḰḱḲḳḴḵḶḷḸḹḺḻḼḽḾḿ # ṀṁṂṃṄṅṆṇṈṉṊṋṌṍṎṏṐṑṒṓṔṕṖṗṘṙṚṛṜṝṞṟ # ṠṡṢṣṤṥṦṧṨṩṪṫṬṭṮṯṰṱṲṳṴṵṶṷṸṹṺṻṼṽṾṿ # ẀẁẂẃẄẅẆẇẈẉẊẋẌẍẎẏẐẑẒẓẔẕẖẗẘẙẚẛ # ẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặẸẹẺẻẼẽẾế # ỀềỂểỄễỆệỈỉỊịỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞở # ỠỡỢợỤụỦủỨứỪừỬửỮữỰựỲỳỴỵỶỷỸỹ # # General Punctuation # # Punctuation rotationally symmetric # [spaces 2000-200a, 202f] # ‐‑‒–—―‖‡•※⁐ ⁑ ⁓ ⁘ ⁙ ⁚ ⁛ ⁜ ⁝⁞ # ⁎‘↑ ↓ # Unresolved Punctuation # ‗’‚‛“”„‟†‣․‥…‧

‰‱′″‴ # ‵‶‷‸‹›‼‽‾‿ # ⁀⁁⁂⁃⁄⁅⁆⁇⁈⁉⁊⁋⁌⁍⁏⁒⁔⁕⁖⁗  # ⁠⁡⁢⁣⁰ⁱ⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ # ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎ₐₑₒₓₔ # ₠₡₢₣₤₥₦₧₨₩₪₫€₭₮₯₰₱₲₳₴₵ # # END SECTION TO IMPROVE # ########################## my $FORWARD = $all_ups . $all_sdn; my $REVERSE = $all_sdn . $all_ups; $TRANS = eval <<"EOP"; warn $@ if $@; sub { # \$_ = lc; # finding inverted upper case is hard # s/"/''/g; # Joey Hess tr/$FORWARD/$REVERSE/; # s/k/>|/g; # Joey Hess } EOP } binmode STDOUT, ':utf8'; binmode STDIN, ':utf8'; while (<>) { chomp; $_ = reverse; &$TRANS; print $_, "\n"; }