| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | package Acme::Matrix; | 
| 2 |  |  |  |  |  |  | our $VERSION = '0.02'; | 
| 3 | 1 |  |  | 1 |  | 68990 | use 5.006; use strict; use warnings; | 
|  | 1 |  |  | 1 |  | 3 |  | 
|  | 1 |  |  | 1 |  | 5 |  | 
|  | 1 |  |  |  |  | 3 |  | 
|  | 1 |  |  |  |  | 33 |  | 
|  | 1 |  |  |  |  | 6 |  | 
|  | 1 |  |  |  |  | 2 |  | 
|  | 1 |  |  |  |  | 65 |  | 
| 4 | 1 |  |  | 1 |  | 523 | use Term::ReadKey; | 
|  | 1 |  |  |  |  | 2126 |  | 
|  | 1 |  |  |  |  | 387 |  | 
| 5 |  |  |  |  |  |  |  | 
| 6 |  |  |  |  |  |  | our (@WORDS, @CHARS, @COLOURS); | 
| 7 |  |  |  |  |  |  | BEGIN { | 
| 8 | 1 |  |  | 1 |  | 33 | $SIG{INT} = \&shutdown; | 
| 9 | 1 |  |  |  |  | 39 | @WORDS = ( | 
| 10 |  |  |  |  |  |  | [qw/し ゅ く う ん/], | 
| 11 |  |  |  |  |  |  | [qw/不 正 直/], | 
| 12 |  |  |  |  |  |  | [qw/き い っ ぽ ん/], | 
| 13 |  |  |  |  |  |  | [qw/憎 し み を 抱 く/], | 
| 14 |  |  |  |  |  |  | [qw/だ ら く ふ は い/], | 
| 15 |  |  |  |  |  |  | [qw/ふ と ど き/], | 
| 16 |  |  |  |  |  |  | [qw/は ち ゃ め ち ゃ/], | 
| 17 |  |  |  |  |  |  | [qw/た い ぎ ゃ く ひ ど う/], | 
| 18 |  |  |  |  |  |  | [qw/ラ ッ キ ー/], | 
| 19 |  |  |  |  |  |  | [qw/し り が お も い/], | 
| 20 |  |  |  |  |  |  | [qw/リ ス ペ ク ト/], | 
| 21 |  |  |  |  |  |  | [qw/ム ー ン/], | 
| 22 |  |  |  |  |  |  | [qw/に っ て ん/], | 
| 23 |  |  |  |  |  |  | [qw/か み の み こ と/], | 
| 24 |  |  |  |  |  |  | [qw/と く し ょ く/], | 
| 25 |  |  |  |  |  |  | [qw/ス キ ャ ン ダ ラ ス/], | 
| 26 |  |  |  |  |  |  | [qw/ぜ に か ね/], | 
| 27 |  |  |  |  |  |  | [qw/エ ク ス プ ロ イ テ ー シ ョ ン/], | 
| 28 |  |  |  |  |  |  | [qw/た く さ ん/], | 
| 29 |  |  |  |  |  |  | [qw/マ イ ン ド/], | 
| 30 |  |  |  |  |  |  | [qw/味 が 分 か る/], | 
| 31 |  |  |  |  |  |  | [qw/に お い が す る/], | 
| 32 |  |  |  |  |  |  | [qw/感 じ て/], | 
| 33 |  |  |  |  |  |  | [qw/リ ッ ス ン/], | 
| 34 |  |  |  |  |  |  | [qw/風 に た な び く/], | 
| 35 |  |  |  |  |  |  | [qw/シ ー ク レ ッ ト/], | 
| 36 |  |  |  |  |  |  | [qw/こ う ざ か か り/], | 
| 37 |  |  |  |  |  |  | [qw/じ つ ご と/], | 
| 38 |  |  |  |  |  |  | [qw/シ ー カ ー/], | 
| 39 |  |  |  |  |  |  | [qw/イ マ ジ ネ ー シ ョ ン/] | 
| 40 |  |  |  |  |  |  | ); | 
| 41 | 1 |  |  |  |  | 21 | @CHARS = qw/ | 
| 42 |  |  |  |  |  |  | あ い う え お か き く け こ さ し す せ そ た ち つ て と | 
| 43 |  |  |  |  |  |  | な に ぬ ね の は ひ ふ へ ほ ま み む め も ら り る れ ろ | 
| 44 |  |  |  |  |  |  | ア イ ウ エ オ カ キ ク ケ コ ガ ギ グ ゲ ゴ サ シ ス セ ソ | 
| 45 |  |  |  |  |  |  | ザ ジ ズ ゼ ゾ タ チ ツ テ ト ダ ヂ ヅ デ ド ナ ニ ヌ ネ ノ | 
| 46 |  |  |  |  |  |  | ハ ヒ フ ヘ ホ バ ビ ブ ベ ボ パ ピ プ ペ ポ マ ミ ム メ モ | 
| 47 |  |  |  |  |  |  | /; | 
| 48 | 1 |  |  |  |  | 454 | @COLOURS = ( 28, 34, 35, 40, 41, 46, 47, 48, 48, 82, 83, 0 ); | 
| 49 |  |  |  |  |  |  | } | 
| 50 |  |  |  |  |  |  |  | 
| 51 |  |  |  |  |  |  |  | 
| 52 |  |  |  |  |  |  | sub start { | 
| 53 | 0 |  |  | 0 | 0 |  | my ($pkg, %args) = @_; | 
| 54 | 0 | 0 |  |  |  |  | @WORDS = @{$args{words}} if ($args{words}); | 
|  | 0 |  |  |  |  |  |  | 
| 55 | 0 | 0 |  |  |  |  | @CHARS = @{$args{chars}} if ($args{chars}); | 
|  | 0 |  |  |  |  |  |  | 
| 56 | 0 |  |  |  |  |  | my ($wchar, $hchar) = GetTerminalSize(); | 
| 57 | 0 |  | 0 |  |  |  | $wchar = $wchar * ($args{offset} || 0.49); | 
| 58 |  |  |  |  |  |  | my %word_lines = ( | 
| 59 | 0 |  |  |  |  |  | map { $_ => [] } 0 .. $wchar | 
|  | 0 |  |  |  |  |  |  | 
| 60 |  |  |  |  |  |  | ); | 
| 61 | 0 |  |  |  |  |  | print "\033[1J"; | 
| 62 | 0 |  |  |  |  |  | print "\033[48;5;232m"; | 
| 63 | 0 |  |  |  |  |  | while (1) { | 
| 64 | 0 |  |  |  |  |  | for (0..$wchar) { | 
| 65 | 0 | 0 |  |  |  |  | if (int(rand(5) + 0.5) > 4) { | 
| 66 | 0 |  |  |  |  |  | my $i = 0; | 
| 67 | 0 |  |  |  |  |  | push @{$word_lines{$_}}, (int(rand(1) + 0.5)) | 
| 68 |  |  |  |  |  |  | ? sprintf("\033[38;5;%sm%s", $COLOURS[int(rand(scalar @COLOURS))], $CHARS[int(rand(scalar @CHARS))]) | 
| 69 | 0 | 0 |  |  |  |  | : map { sprintf("\033[38;5;%sm%s", $COLOURS[$i++], $_) } @{ $WORDS[int(rand(scalar @WORDS))] }, "  "; | 
|  | 0 |  |  |  |  |  |  | 
|  | 0 |  |  |  |  |  |  | 
| 70 |  |  |  |  |  |  | } | 
| 71 | 0 |  | 0 |  |  |  | print shift(@{$word_lines{$_}}) || "  "; | 
| 72 |  |  |  |  |  |  | } | 
| 73 | 0 |  |  |  |  |  | print "\n"; | 
| 74 | 0 |  |  |  |  |  | select(undef, undef, undef, 0.01); | 
| 75 |  |  |  |  |  |  | } | 
| 76 |  |  |  |  |  |  | } | 
| 77 |  |  |  |  |  |  |  | 
| 78 |  |  |  |  |  |  | sub shutdown { | 
| 79 | 0 |  |  | 0 | 0 |  | print "\033[0m"; | 
| 80 | 0 |  |  |  |  |  | print "\033c"; | 
| 81 | 0 |  |  |  |  |  | exit; | 
| 82 |  |  |  |  |  |  | } | 
| 83 |  |  |  |  |  |  |  | 
| 84 |  |  |  |  |  |  | __END__ |