#!/usr/bin/perl # do and un-do morse code # Jason Thaxter # build table as inefficiently as possible $c{'a'}= ".-"; $c{'b'}= "-..."; $c{'c'}= "-.-."; $c{'d'}= "-.."; $c{'e'}= "."; $c{'f'}= "..-."; $c{'g'}= "--."; $c{'h'}= "...."; $c{'i'}= ".."; $c{'j'}= ".---"; $c{'k'}= "-.-"; $c{'l'}= ".-.."; $c{'m'}= "--"; $c{'n'}= "-."; $c{'o'}= "---"; $c{'p'}= ".--."; $c{'q'}= "--.-"; $c{'r'}= ".-."; $c{'s'}= "..."; $c{'t'}= "-"; $c{'u'}= "..-"; $c{'v'}= "...-"; $c{'w'}= ".--"; $c{'x'}= "-..-"; $c{'y'}= "-.--"; $c{'z'}= "--.."; $c{'1'}= ".----"; $c{'2'}= "..---"; $c{'3'}= "...--"; $c{'4'}= "....-"; $c{'5'}= "....."; $c{'6'}= "-...."; $c{'7'}= "--..."; $c{'8'}= "---.."; $c{'9'}= "----."; $c{'0'}= "-----"; if ($ARGV[0] eq "-d"){ while(){ s/\b([.\-]+?)\b/decode($1)/ge; print; } } else { while(){ print "MORSE:"; #tr/A-Za-z0-9//cd; tr/A-Z/a-z/; s/\s([a-z0-9]+?)\s/encode($1)/ge; print; } } sub encode(){ $a = shift; return $c{$a}; } sub decode(){ $a = shift; return "($a)"; }