File Coverage

File: blib/lib/Acme/Python.pm
Coverage: 66.7%

linestmtbrancondsubtimecode
1package Acme::Python;
2
3$VERSION = 0.01;
4
5my $signed = "Hisssssssssssssssss";
6
7sub encode {
8
0
0
0
local $_ = unpack "b*", pop;
9
0
0
0
0
0
$_ = join ' ', map{ (/1/?'H':'h').'is'.('s' x length); } m/(0+|1+)/g;
10
0
0
s/(.{40,}?\s)/1ドル\n/g;
11
0
0
"$signed\n$_"
12}
13sub decode {
14
1
1
31
local $_ = pop;
15
1
6065
s/(^$signed|\s)//g;
16
1
4494
20
51004
s/([hH])is(s+)/ (1ドル eq 'H'?'1':'0')x(length 2ドル); /ge;
17
1
3
pack "b*", $_
18}
19sub garbled {
20
1
1
10
$_[0] =~ /\S/
21}
22sub signed {
23
1
1
33
$_[0] =~ /^$signed/
24}
25
26open 0 or print "Can't execute '0ドル'\n" and exit;
27
28(my $program = join "", <0>) =~ s/.*^\s*use\s+Acme::Python\s*;\n//sm;
29
30local $SIG{__WARN__} = \&garbled;
31
32do {
33
1
1
1
1
10
3
14
eval decode $program;
34 exit
35} unless garbled $program && not signed $program;
36
37
38open 0, ">0ドル" or print "Can't python-ise '0ドル'\n" and exit;
39
40print {0} "use Acme::Python;\n", encode $program and exit;
41

AltStyle によって変換されたページ (->オリジナル) /