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
|
BEGIN { binmode(STDOUT, ":utf8"); binmode(STDIN, ":utf8"); %specials = ('%' => 'percent', '-' => 'minus', '>' => 'greater', '<' => 'less', ',' => 'comma', '.' => 'period', '$' => 'dollar', '!' => 'exclam', '?' => 'question', '+' => 'plus', '/' => 'slash', '#' => 'numbersign', '@' => 'at', '|' => 'bar', '~' => 'asciitilde', '^' => 'asciicircum', '(' => 'parenleft', ')' => 'parenright', '[' => 'bracketleft', ']' => 'bracketright', "'" => 'apostrophe', '\\' => 'backslash', ':' => 'colon', ';' => 'semicolon', ' ' => 'space', ); sub splitup { my $arg=shift; local $_; my @out; my $rv; return "\{$arg\}" if length($arg) > 7; @out=split //, $arg; $rv=""; for (@out) { $_ = $specials{$_} // $_; $rv .= " <$_>"; } return $rv; } } unless (/^#/) { my $hold=$_; s/<MM>/<Multi_key> <Multi_key>/; s({([][[:alnum:] _+:;%@><,.^\$+#()?!/|'\\~-]+)})(splitup($1))e; if (length($1) > 7) { $_=$hold; s/^<MM>/### <MM>/; } }
|