| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
package Acme::Hodor; $VERSION = 1.00; |
|
2
|
|
|
|
|
|
|
my $signed = "HODOR hodor hodor HODOR "x2; |
|
3
|
|
|
|
|
|
|
sub encypher { |
|
4
|
0
|
|
|
0
|
0
|
0
|
local $_ = unpack "b*", pop; |
|
5
|
0
|
|
|
|
|
0
|
s/0/HODOR /g; |
|
6
|
0
|
|
|
|
|
0
|
s/1/hodor /g; |
|
7
|
0
|
|
|
|
|
0
|
s/(.{48})/$1\n/g; |
|
8
|
0
|
|
|
|
|
0
|
$signed."\n".$_ |
|
9
|
|
|
|
|
|
|
} |
|
10
|
|
|
|
|
|
|
sub decypher { |
|
11
|
1
|
|
|
1
|
0
|
3
|
local $_ = pop; |
|
12
|
1
|
|
|
|
|
301
|
s/^$signed|[^HODOR hodor ]//g; |
|
13
|
1
|
|
|
|
|
33
|
s/HODOR /0/g; |
|
14
|
1
|
|
|
|
|
20
|
s/hodor /1/g; |
|
15
|
1
|
|
|
|
|
84
|
pack "b*", $_ |
|
16
|
|
|
|
|
|
|
} |
|
17
|
|
|
|
|
|
|
sub garbled { |
|
18
|
1
|
|
|
1
|
0
|
13
|
$_[0] =~ /\S/ |
|
19
|
|
|
|
|
|
|
} |
|
20
|
|
|
|
|
|
|
sub signed { |
|
21
|
1
|
|
|
1
|
0
|
23
|
$_[0] =~ /^$signed/ |
|
22
|
|
|
|
|
|
|
} |
|
23
|
|
|
|
|
|
|
open 0 or print "Can't transmit '$0'\n" and exit; |
|
24
|
|
|
|
|
|
|
(my $telegram = join "", <0>) =~ s/.*^\s*use\s+Acme::Hodor\s*;\n//sm; |
|
25
|
|
|
|
|
|
|
local $SIG{__WARN__} = \&garbled; |
|
26
|
|
|
|
|
|
|
do {eval decypher $telegram; print STDERR $@ if $@; exit} |
|
27
|
|
|
|
|
|
|
unless garbled $telegram && not signed $telegram; |
|
28
|
|
|
|
|
|
|
open 0, ">$0" or print "Cannot encode '$0'\n" and exit; |
|
29
|
|
|
|
|
|
|
print {0} "use Acme::Hodor;\n", encypher $telegram and exit; |
|
30
|
|
|
|
|
|
|
__END__ |