1
2
3
4
5
6
7
8
| #!/usr/bin/perl
my $max = 10;
for ( 1 .. $max ) {
my $percent = $_ / $max * 100;
print "$_ - $percent % OK!n";
sleep(1);
} |
#!/usr/bin/perl
my $max = 10;
for ( 1 .. $max ) {
my $percent = $_ / $max * 100;
print "$_ - $percent % OK!n";
sleep(1);
}
方法二
从“…..”的长度来判断进度。
1
2
3
4
5
6
7
8
9
| #!/usr/bin/perl -w
$| = 1;
my $max = 10;
for ( 1 .. $max ) {
print ".";
print " Complete!n" if ( $_ == $max );
sleep(1);
} |
#!/usr/bin/perl -w
$| = 1;
my $max = 10;
for ( 1 .. $max ) {
print ".";
print " Complete!n" if ( $_ == $max );
sleep(1);
}
用滚轮在原地显示进度,当然也可以加入百分比。
1
2
3
4
5
6
7
8
9
10
11
12
| #!/usr/bin/perl -w
local $| = 1;
my @progress_symbol = ( '-', '', '|', '/' );
my $n = 0;
for ( my $i = 1 ; $i <= 100 ; $i++ ) {
print "r $progress_symbol[$n] $i";
$n = ( $n 》= 3 ) ? 0 : $n + 1;
select( undef, undef, undef, 0.1 );
}
print "n";
local $| = 0; |
#!/usr/bin/perl -w
local $| = 1;
my @progress_symbol = ( '-', '', '|', '/' );
my $n = 0;
for ( my $i = 1 ; $i <= 100 ; $i++ ) {
print "r $progress_symbol[$n] $i";
$n = ( $n 》= 3 ) ? 0 : $n + 1;
select( undef, undef, undef, 0.1 );
}
print "n";
local $| = 0;
在原地显示走时的数字时钟,可以加入百分比。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| #!/usr/bin/perl -w
local $| = 1;
for ( 1 .. 10 ) {
&gettime;
print "r $now";
sleep(1);
}
print "n";
local $| = 0;
exit;
sub gettime {
my ( $sec, $min, $hour, $day, $mon, $year, $weekday, $yeardate,
$savinglightday )
= ( localtime(time) );
$sec = ( $sec 《 10 ) ? "0$sec" : $sec;
$min = ( $min 《 10 ) ? "0$min" : $min;
$hour = ( $hour 《 10 ) ? "0$hour" : $hour;
$day = ( $day 《 10 ) ? "0$day" : $day;
$mon = ( $mon 《 9 ) ? "0" . ( $mon + 1 ) : ( $mon + 1 );
$year += 1900;
$now = "$year.$mon.$day $hour:$min:$sec";
} |
#!/usr/bin/perl -w
local $| = 1;
for ( 1 .. 10 ) {
&gettime;
print "r $now";
sleep(1);
}
print "n";
local $| = 0;
exit;
sub gettime {
my ( $sec, $min, $hour, $day, $mon, $year, $weekday, $yeardate,
$savinglightday )
= ( localtime(time) );
$sec = ( $sec 《 10 ) ? "0$sec" : $sec;
$min = ( $min 《 10 ) ? "0$min" : $min;
$hour = ( $hour 《 10 ) ? "0$hour" : $hour;
$day = ( $day 《 10 ) ? "0$day" : $day;
$mon = ( $mon 《 9 ) ? "0" . ( $mon + 1 ) : ( $mon + 1 );
$year += 1900;
$now = "$year.$mon.$day $hour:$min:$sec";
}
有百分比,有不断增长的进度条。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #!/usr/bin/perl -w
$n = 10;
for ( $i = 1 ; $i 《= $n ; $i++ ) {
proc_bar( $i, $n );
select( undef, undef, undef, 0.2 );
}
print "n";
sub proc_bar {
local $| = 1;
my $i = $_[0] || return 0;
my $n = $_[1] || return 0;
print "r [ "
. ( "32" x int( ( $i / $n ) * 50 ) )
. ( " " x ( 50 - int( ( $i / $n ) * 50 ) ) ) . " ] ";
printf( "%2.1f %%", $i / $n * 100 );
local $| = 0;
} |
#!/usr/bin/perl -w
$n = 10;
for ( $i = 1 ; $i 《= $n ; $i++ ) {
proc_bar( $i, $n );
select( undef, undef, undef, 0.2 );
}
print "n";
sub proc_bar {
local $| = 1;
my $i = $_[0] || return 0;
my $n = $_[1] || return 0;
print "r [ "
. ( "32" x int( ( $i / $n ) * 50 ) )
. ( " " x ( 50 - int( ( $i / $n ) * 50 ) ) ) . " ] ";
printf( "%2.1f %%", $i / $n * 100 );
local $| = 0;
}
(自己比较喜欢的一种,推荐!)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #!/usr/bin/perl -w
$n = 27;
for ( $i = 1 ; $i 《= $n ; $i++ ) {
proc_bar( $i, $n );
select( undef, undef, undef, 0.2 );
}
print "n";
sub proc_bar {
local $| = 1;
my $i = $_[0] || return 0;
my $n = $_[1] || return 0;
print "r33[36m[33[33m"
. ( "|" x int( ( $i / $n ) * 50 ) )
. ( " " x ( 50 - int( ( $i / $n ) * 50 ) ) )
. "33[36m]";
printf( "%2.1f%%33[0m", $i / $n * 100 );
local $| = 0;
} |
#!/usr/bin/perl -w
$n = 27;
for ( $i = 1 ; $i 《= $n ; $i++ ) {
proc_bar( $i, $n );
select( undef, undef, undef, 0.2 );
}
print "n";
sub proc_bar {
local $| = 1;
my $i = $_[0] || return 0;
my $n = $_[1] || return 0;
print "r33[36m[33[33m"
. ( "|" x int( ( $i / $n ) * 50 ) )
. ( " " x ( 50 - int( ( $i / $n ) * 50 ) ) )
. "33[36m]";
printf( "%2.1f%%33[0m", $i / $n * 100 );
local $| = 0;
}
(自己比较喜欢的一种,推荐!)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
| #!/usr/bin/perl -w
# Author: Zhao
# Date: 2009.12.22
# Purpose: simulate the progress bar
# Update: 2009.12.23
# add color output
# Update: 2010.5.22
# calculate remaining time
$n = 1000;
for ( $i = 1 ; $i 《= $n ; $i++ ) {
proc_bar( $i, $n );
select( undef, undef, undef, 0.01 );
}
print "n";
sub proc_bar {
local $| = 1;
my ( $i, $n ) = @_;
my $rt = '';
my ( $num, $a, $b, @k, @v );
if ( $i % 50 == 1 ) { $ts_global{$i} = time; }
$num = scalar keys %ts_global;
if ( $num 》= 5 ) {
delete $ts_global{ $i - 250 };
@k = keys %ts_global;
@v = values %ts_global;
( $b, $a ) = best_line( @k, @v );
$rt = int( $b * $n + $a - time + 1 ) . "s ";
}
print "r33[36m[33[33m"
. ( "#" x int( ( $i / $n ) * 50 ) )
. ( " " x ( 50 - int( ( $i / $n ) * 50 ) ) )
. "33[36m]";
printf( "%2.1f%%33[0m", $i / $n * 100 );
print " $rt";
}
sub best_line {
my ( $array1ref, $array2ref ) = @_;
my ( $i, $product, $sum1, $sum2, $sum1_squares, $a, $b );
for ( $i = 0 ; $i 《 @$array1ref ; $i++ ) {
$product += $array1ref-》[$i] * $array2ref-》[$i];
$sum1 += $array1ref-》[$i];
$sum1_squares += $array1ref-》[$i]**2;
$sum2 += $array2ref-》[$i];
}
$b =
( ( @$array1ref * $product ) - ( $sum1 * $sum2 ) ) /
( ( @$array1ref * $sum1_squares ) - ( $sum1**2 ) );
$a = ( $sum2 - $b * $sum1 ) / @$array1ref;
return ( $b, $a );
} |
#!/usr/bin/perl -w
# Author: Zhao
# Date: 2009.12.22
# Purpose: simulate the progress bar
# Update: 2009.12.23
# add color output
# Update: 2010.5.22
# calculate remaining time
$n = 1000;
for ( $i = 1 ; $i 《= $n ; $i++ ) {
proc_bar( $i, $n );
select( undef, undef, undef, 0.01 );
}
print "n";
sub proc_bar {
local $| = 1;
my ( $i, $n ) = @_;
my $rt = '';
my ( $num, $a, $b, @k, @v );
if ( $i % 50 == 1 ) { $ts_global{$i} = time; }
$num = scalar keys %ts_global;
if ( $num 》= 5 ) {
delete $ts_global{ $i - 250 };
@k = keys %ts_global;
@v = values %ts_global;
( $b, $a ) = best_line( @k, @v );
$rt = int( $b * $n + $a - time + 1 ) . "s ";
}
print "r33[36m[33[33m"
. ( "#" x int( ( $i / $n ) * 50 ) )
. ( " " x ( 50 - int( ( $i / $n ) * 50 ) ) )
. "33[36m]";
printf( "%2.1f%%33[0m", $i / $n * 100 );
print " $rt";
}
sub best_line {
my ( $array1ref, $array2ref ) = @_;
my ( $i, $product, $sum1, $sum2, $sum1_squares, $a, $b );
for ( $i = 0 ; $i 《 @$array1ref ; $i++ ) {
$product += $array1ref-》[$i] * $array2ref-》[$i];
$sum1 += $array1ref-》[$i];
$sum1_squares += $array1ref-》[$i]**2;
$sum2 += $array2ref-》[$i];
}
$b =
( ( @$array1ref * $product ) - ( $sum1 * $sum2 ) ) /
( ( @$array1ref * $sum1_squares ) - ( $sum1**2 ) );
$a = ( $sum2 - $b * $sum1 ) / @$array1ref;
return ( $b, $a );
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| #!/usr/bin/perl
use strict;
local $| = 1;
my ( $min_prod_id, $max_prod_id );
print "Product ID Range (min max): ";
my $input = 《STDIN》;
if ( $input =~ /(d+)s+(d+)/ ) {
if ( $1 《= $2 ) {
( $min_prod_id, $max_prod_id ) = ( $1, $2 );
}
else {
( $min_prod_id, $max_prod_id ) = ( $2, $1 );
}
}
else {
&fatal_error("Error input!");
}
foreach my $prod_id ( $min_prod_id .. $max_prod_id ) {
my $pulse = int(
( $prod_id - $min_prod_id ) / ( $max_prod_id - $min_prod_id ) * 100 );
printf( "Progressing: [%-50s] %d%%r", "#" x int( $pulse / 2 ), $pulse );
#push(@prod_details, [$prod_id, $prod_name, $prod_price, $prod_saleprice]);
}
print "n";
sub fatal_error {
my ($msg) = @_;
warn "$msgn";
print "nPlease Enter to exit...";
;
exit(1);
} |
#!/usr/bin/perl
use strict;
local $| = 1;
my ( $min_prod_id, $max_prod_id );
print "Product ID Range (min max): ";
my $input = 《STDIN》;
if ( $input =~ /(d+)s+(d+)/ ) {
if ( $1 《= $2 ) {
( $min_prod_id, $max_prod_id ) = ( $1, $2 );
}
else {
( $min_prod_id, $max_prod_id ) = ( $2, $1 );
}
}
else {
&fatal_error("Error input!");
}
foreach my $prod_id ( $min_prod_id .. $max_prod_id ) {
my $pulse = int(
( $prod_id - $min_prod_id ) / ( $max_prod_id - $min_prod_id ) * 100 );
printf( "Progressing: [%-50s] %d%%r", "#" x int( $pulse / 2 ), $pulse );
#push(@prod_details, [$prod_id, $prod_name, $prod_price, $prod_saleprice]);
}
print "n";
sub fatal_error {
my ($msg) = @_;
warn "$msgn";
print "nPlease Enter to exit...";
;
exit(1);
}
相关