Chas. Owens wrote:
On Sat, Dec 13, 2008 at 21:13, Richard <rich.j...@gmail.com> wrote:
wanted to draw a box that's counting up for certain time.
Thought I could use the counter but it just displays the box not the
number..

can anyone point it out for me?

thank you.

use warnings;
use strict;

sub counter {
 my $count;
 my $counting = <<EOF;
====================================================
|           Counting...
                                   |
|           ++$count;
                                   |
|
                                           |
====================================================
EOF

 return sub { print $counting }
}

my $real_count;
my $yeah = counter();
while ($real_count < '35') {
    ++$real_count;
    system('clear');
    $yeah->();
}

The problem is that

my $counting = <<EOF;
====================================================
|           Counting...
                                        |
|           ++$count;
                                        |
|
                                                |
====================================================
EOF

only gets executed once.  Move it into your closure to execute it each
time the closure is called:O

#!/usr/bin/perl

use warnings;
use strict;

sub counter {
        my $count;
        return sub {
                my $l = (length ++$count)/2 - .5;
                my $r = (length $count)/2;
                print
                        "=" x 52, "\n",
                        "|", " " x 20, "Counting...", " " x 19, "|\n",
                        "|", " " x (25 - $l), $count, " " x (25 - $r), "|\n",
                        "|", " " x 50, "|\n",
                        "=" x 52, "\n";
        }
}

my $yeah = counter();
for (1 .. 35) {
        system('clear');
        $yeah->();
        select undef, undef, undef, .25;
}


WOW..

thank you and I will study this code now... this is great!!



--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to