Acme-Matrix
view release on metacpan or search on metacpan
lib/Acme/Matrix.pm view on Meta::CPAN
sub start {
my ($pkg, %args) = @_;
@WORDS = @{$args{words}} if ($args{words});
@CHARS = @{$args{chars}} if ($args{chars});
my $delay = $args{delay} ? $args{delay} / 1000 : 0.01;
my $space = " " x ($args{spacing} || 2);
my ($wchar, $hchar) = GetTerminalSize();
$wchar = $wchar * (0.99 / ($args{spacing} || 2));
my %word_lines = (
map { $_ => [] } 0 .. $wchar
);
print "\033[1J";
print "\033[48;5;232m";
while (1) {
for (0..$wchar) {
if (int(rand(5) + 0.5) > 4) {
my $i = 0;
push @{$word_lines{$_}}, (int(rand(1) + 0.5))
? sprintf("\033[38;5;%sm%s", $COLOURS[int(rand(scalar @COLOURS))], $CHARS[int(rand(scalar @CHARS))])
: map { sprintf("\033[38;5;%sm%s", $COLOURS[$i++], $_) } @{ $WORDS[int(rand(scalar @WORDS))] }, $space;
}
print shift(@{$word_lines{$_}}) || $space;
}
print "\n";
select(undef, undef, undef, $delay);
}
}
sub shutdown {
print "\033[0m";
( run in 2.173 seconds using v1.01-cache-2.11-cpan-49f99fa48dc )