| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | package Acme::Matrix; | 
| 2 |  |  |  |  |  |  | our $VERSION = '0.01'; | 
| 3 | 1 |  |  | 1 |  | 66623 | use 5.006; use strict; use warnings; | 
|  | 1 |  |  | 1 |  | 5 |  | 
|  | 1 |  |  | 1 |  | 5 |  | 
|  | 1 |  |  |  |  | 2 |  | 
|  | 1 |  |  |  |  | 33 |  | 
|  | 1 |  |  |  |  | 5 |  | 
|  | 1 |  |  |  |  | 2 |  | 
|  | 1 |  |  |  |  | 29 |  | 
| 4 | 1 |  |  | 1 |  | 489 | use Term::ReadKey; | 
|  | 1 |  |  |  |  | 2069 |  | 
|  | 1 |  |  |  |  | 374 |  | 
| 5 |  |  |  |  |  |  |  | 
| 6 |  |  |  |  |  |  | our (@WORDS, @CHARS); | 
| 7 |  |  |  |  |  |  | BEGIN { | 
| 8 | 1 |  |  | 1 |  | 33 | $SIG{INT} = \&shutdown; | 
| 9 | 1 |  |  |  |  | 34 | @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 |  |  |  |  | 365 | @CHARS = qw/ | 
| 42 |  |  |  |  |  |  | あ い う え お か き く け こ さ し す せ そ た ち つ て と | 
| 43 |  |  |  |  |  |  | な に ぬ ね の は ひ ふ へ ほ ま み む め も ら り る れ ろ | 
| 44 |  |  |  |  |  |  | ア イ ウ エ オ カ キ ク ケ コ ガ ギ グ ゲ ゴ サ シ ス セ ソ | 
| 45 |  |  |  |  |  |  | ザ ジ ズ ゼ ゾ タ チ ツ テ ト ダ ヂ ヅ デ ド ナ ニ ヌ ネ ノ | 
| 46 |  |  |  |  |  |  | ハ ヒ フ ヘ ホ バ ビ ブ ベ ボ パ ピ プ ペ ポ マ ミ ム メ モ | 
| 47 |  |  |  |  |  |  | /; | 
| 48 |  |  |  |  |  |  | } | 
| 49 |  |  |  |  |  |  |  | 
| 50 |  |  |  |  |  |  | sub start { | 
| 51 | 0 |  |  | 0 | 0 |  | my ($pkg, %args) = @_; | 
| 52 | 0 | 0 |  |  |  |  | @WORDS = @{$args{words}} if ($args{words}); | 
|  | 0 |  |  |  |  |  |  | 
| 53 | 0 | 0 |  |  |  |  | @CHARS = @{$args{chars}} if ($args{chars}); | 
|  | 0 |  |  |  |  |  |  | 
| 54 | 0 |  |  |  |  |  | my ($wchar, $hchar) = GetTerminalSize(); | 
| 55 | 0 |  | 0 |  |  |  | $wchar = $wchar * ($args{offset} || 0.49); | 
| 56 |  |  |  |  |  |  | my %word_lines = ( | 
| 57 | 0 |  |  |  |  |  | map { $_ => [] } 0 .. $wchar | 
|  | 0 |  |  |  |  |  |  | 
| 58 |  |  |  |  |  |  | ); | 
| 59 | 0 |  |  |  |  |  | print "\033[1J"; | 
| 60 | 0 |  |  |  |  |  | print "\033[48;5;232m"; | 
| 61 | 0 |  |  |  |  |  | while (1) { | 
| 62 | 0 |  |  |  |  |  | for (0..$wchar) { | 
| 63 | 0 | 0 |  |  |  |  | if (int(rand(5) + 0.5) > 4) { | 
| 64 | 0 |  |  |  |  |  | push @{$word_lines{$_}}, (int(rand(1) + 0.5)) | 
| 65 |  |  |  |  |  |  | ? "\033[38;5;34m" . $CHARS[int(rand(scalar @CHARS))] | 
| 66 | 0 | 0 |  |  |  |  | : map { "\033[38;5;46m" . $_ } @{ $WORDS[int(rand(scalar @WORDS))] }; | 
|  | 0 |  |  |  |  |  |  | 
|  | 0 |  |  |  |  |  |  | 
| 67 |  |  |  |  |  |  | } | 
| 68 | 0 |  | 0 |  |  |  | print shift(@{$word_lines{$_}}) || "  "; | 
| 69 |  |  |  |  |  |  | } | 
| 70 | 0 |  |  |  |  |  | print "\n"; | 
| 71 | 0 |  |  |  |  |  | select(undef, undef, undef, 0.01); | 
| 72 |  |  |  |  |  |  | } | 
| 73 |  |  |  |  |  |  | } | 
| 74 |  |  |  |  |  |  |  | 
| 75 |  |  |  |  |  |  | sub shutdown { | 
| 76 | 0 |  |  | 0 | 0 |  | print "\033[0m"; | 
| 77 | 0 |  |  |  |  |  | print "\033c"; | 
| 78 | 0 |  |  |  |  |  | exit; | 
| 79 |  |  |  |  |  |  | } | 
| 80 |  |  |  |  |  |  |  | 
| 81 |  |  |  |  |  |  | =head1 NAME | 
| 82 |  |  |  |  |  |  |  | 
| 83 |  |  |  |  |  |  | Acme::Matrix - Heavenly digital rain | 
| 84 |  |  |  |  |  |  |  | 
| 85 |  |  |  |  |  |  | =head1 VERSION | 
| 86 |  |  |  |  |  |  |  | 
| 87 |  |  |  |  |  |  | Version 0.01 | 
| 88 |  |  |  |  |  |  |  | 
| 89 |  |  |  |  |  |  | =cut | 
| 90 |  |  |  |  |  |  |  | 
| 91 |  |  |  |  |  |  | =head1 SYNOPSIS | 
| 92 |  |  |  |  |  |  |  | 
| 93 |  |  |  |  |  |  | Quick summary of what the module does. | 
| 94 |  |  |  |  |  |  |  | 
| 95 |  |  |  |  |  |  | Perhaps a little code snippet. | 
| 96 |  |  |  |  |  |  |  | 
| 97 |  |  |  |  |  |  | use Acme::Matrix; | 
| 98 |  |  |  |  |  |  |  | 
| 99 |  |  |  |  |  |  | Acme::Matrix->start(); | 
| 100 |  |  |  |  |  |  |  | 
| 101 |  |  |  |  |  |  | ... | 
| 102 |  |  |  |  |  |  |  | 
| 103 |  |  |  |  |  |  | タ    くと              うの  い                    う  ん不  ー        さ  グ  ャ      ッり      ゃ  ら    イ  ネ  ソ | 
| 104 |  |  |  |  |  |  | ふ              かデみ  っ  あ    マ      し        正  し        ん      ン      スが      く  く    マ | 
| 105 |  |  |  |  |  |  | は      オぜリ  み  こえぽ    そ  イ  シ  り    じ  直  り                ダ      ンお      ひ  ふ    ジじ | 
| 106 |  |  |  |  |  |  | りい        にスじの  と  ん      スン  ー  がた  つ  ム  が  も            ラ    ね  も      どムは    ネつ | 
| 107 |  |  |  |  |  |  | デ      マかペつみ      オ      キド  ク  おい  ご  ー  お    ムし        ス      ザい      うーい  バーごる | 
| 108 |  |  |  |  |  |  | イねクごこモ    オ      ャ    レ  もぎ  と  ン  も  ふーゅ    ね          て          ンす    シと        風 | 
| 109 |  |  |  |  |  |  | た    コ      ンリトとと              ン    ッ  いゃ    た    い  とンく      リ            味        る    ョと  リ    に | 
| 110 |  |  |  |  |  |  | く          シドス    ホ            ふダ    ト    く  シく    ぜ  ど  う      ス          ヌが      は      ンく  ッ    た | 
| 111 |  |  |  |  |  |  | さ          ー  ペ        も    しととラ          ひ  ーさ  シに  き  ん      ペ            分    じ        ダし  スさ  な | 
| 112 |  |  |  |  |  |  | ん  リ      カ  クボ            りくどス      だ  ど  カん  ーか  た          ク          バか    つ          ょリン    び | 
| 113 |  |  |  |  |  |  | ッ      ー  ト              がしき        ら  う  ー    クね  く          ト  ネ    の  る    ご          くス      く | 
| 114 |  |  |  |  |  |  | ス      く        シ  ま    おょ          く  マ    て  レプ  さ                      に      と      イ  ベペ      た | 
| 115 |  |  |  |  |  |  | ン      え      カー        もく          ふ  イ風    にッガ  んチ                    お            にマ    ク      く | 
| 116 |  |  |  |  |  |  | に              イち  ク        いシ      シ  は  ンに    おト    モ              セツ    い  メ          ジ    ト      さ | 
| 117 |  |  |  |  |  |  | お  し      か  マ  ムレ          ー      ー  い  ドた    い            マ          ス    がら        憎  ネ            ん | 
| 118 |  |  |  |  |  |  | い  ゅ      みなジ  ーッ      ちヘカ      カ  憎  えな    が            イ      風  キ    す          し  ー            マ | 
| 119 |  |  |  |  |  |  | が  く      の  ネ  ント          ー      ー  し    び    す            ン      に  ャ    る          み  シ    ビ      イ | 
| 120 |  |  |  |  |  |  | す  う      み  ー  し        る  カか        み味  くた  る            ド      たつン                を  ョ    い      ン | 
| 121 |  |  |  |  |  |  | る  ん      こ  シ  ゅ              み  ム    をが    い  め                    な  ダ      ビ        抱  ン      フ    ド | 
| 122 |  |  |  |  |  |  |  | 
| 123 |  |  |  |  |  |  | Because of the bottom up nature It's difficult to actually make it rain inside a terminal efficiently. Thus my rain is heavenly. | 
| 124 |  |  |  |  |  |  |  | 
| 125 |  |  |  |  |  |  | =head1 AUTHOR | 
| 126 |  |  |  |  |  |  |  | 
| 127 |  |  |  |  |  |  | LNATION, C<<  >> | 
| 128 |  |  |  |  |  |  |  | 
| 129 |  |  |  |  |  |  | =head1 BUGS | 
| 130 |  |  |  |  |  |  |  | 
| 131 |  |  |  |  |  |  | Please report any bugs or feature requests to C, or through | 
| 132 |  |  |  |  |  |  | the web interface at L.  I will be notified, and then you'll | 
| 133 |  |  |  |  |  |  | automatically be notified of progress on your bug as I make changes. | 
| 134 |  |  |  |  |  |  |  | 
| 135 |  |  |  |  |  |  | =head1 SUPPORT | 
| 136 |  |  |  |  |  |  |  | 
| 137 |  |  |  |  |  |  | You can find documentation for this module with the perldoc command. | 
| 138 |  |  |  |  |  |  |  | 
| 139 |  |  |  |  |  |  | perldoc Acme::Matrix | 
| 140 |  |  |  |  |  |  |  | 
| 141 |  |  |  |  |  |  | You can also look for information at: | 
| 142 |  |  |  |  |  |  |  | 
| 143 |  |  |  |  |  |  | =over 4 | 
| 144 |  |  |  |  |  |  |  | 
| 145 |  |  |  |  |  |  | =item * RT: CPAN's request tracker (report bugs here) | 
| 146 |  |  |  |  |  |  |  | 
| 147 |  |  |  |  |  |  | L | 
| 148 |  |  |  |  |  |  |  | 
| 149 |  |  |  |  |  |  | =item * CPAN Ratings | 
| 150 |  |  |  |  |  |  |  | 
| 151 |  |  |  |  |  |  | L | 
| 152 |  |  |  |  |  |  |  | 
| 153 |  |  |  |  |  |  | =item * Search CPAN | 
| 154 |  |  |  |  |  |  |  | 
| 155 |  |  |  |  |  |  | L | 
| 156 |  |  |  |  |  |  |  | 
| 157 |  |  |  |  |  |  | =back | 
| 158 |  |  |  |  |  |  |  | 
| 159 |  |  |  |  |  |  | =head1 ACKNOWLEDGEMENTS | 
| 160 |  |  |  |  |  |  |  | 
| 161 |  |  |  |  |  |  | =head1 LICENSE AND COPYRIGHT | 
| 162 |  |  |  |  |  |  |  | 
| 163 |  |  |  |  |  |  | This software is Copyright (c) 2023 by LNATION. | 
| 164 |  |  |  |  |  |  |  | 
| 165 |  |  |  |  |  |  | This is free software, licensed under: | 
| 166 |  |  |  |  |  |  |  | 
| 167 |  |  |  |  |  |  | The Artistic License 2.0 (GPL Compatible) | 
| 168 |  |  |  |  |  |  |  | 
| 169 |  |  |  |  |  |  | =cut | 
| 170 |  |  |  |  |  |  |  | 
| 171 |  |  |  |  |  |  | 1; # End of Acme::Matrix |