-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmorse-encode
executable file
·75 lines (70 loc) · 1.32 KB
/
morse-encode
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/perl -p
use open ':locale';
use utf8;
BEGIN {
$spaced = @ARGV && $ARGV[0] =~ /^-s|--spaced/ && shift;
$ascii = @ARGV && $ARGV[0] =~ /^-a|--ascii/ && shift;
$morse_codes = q{
A •–
B –•••
C –•–•
D –••
E •
F ••–•
G ––•
H ••••
I ••
J •–––
K –•–
L •–••
M ––
N –•
O –––
P •––•
Q ––•–
R •–•
S •••
T –
U ••–
V •••–
W •––
X –••–
Y –•––
Z ––••
0 –––––
1 •––––
2 ••–––
3 •••––
4 ••••–
5 •••••
6 –••••
7 ––•••
8 –––••
9 ––––•
. •–•–•–
, ––••––
? ••––••
' •––––•
! –•–•––
/ –••–•
( –•––•
) –•––•–
& • •••
: –––•••
; –•–•–•
= –•••–
+ •–•–•
- –••••–
_ ••–– •–
" •–••–•
$ •••–••–
@ •––•–•
};
$morse_codes =~ s/^\s*(.*?)\s*$/$1/s;
%morse_codes = map { split(/\t/, $_, 2) } split(/\n\t/, $morse_codes);
}
foreach my $c (keys %morse_codes) {
s/\Q$c\E/$morse_codes{$c} /ig;
}
s/(.)/$1 /g if $spaced;
tr/•–/.-/ if $ascii;