You probably don't want to be using a prototype of () for this sub as you'll be trying to pass arguments to a sub that (regardless of the shifts inside the sub) doesn't take any!
You can also simplify things greatly by performing another sum (to get rid of that case: { ... })in combination with a single printf()...
sub FileProgress {
my $wrote = shift;
my $size = shift;
my $percent = $wrote / $size * 100;
printf "\r[%-10s] %3u%% done. %u bytes",
'*' x int( $percent / 10 ),
$percent,
$wrote;
return 1;
}
--k.
Update: Removed the trailing \n. |