Chinaunix首页 | 论坛 | 博客
  • 博客访问: 468192
  • 博文数量: 118
  • 博客积分: 4015
  • 博客等级: 上校
  • 技术积分: 1233
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-24 22:11
文章分类

全部博文(118)

文章存档

2013年(5)

2011年(61)

2010年(52)

分类: Python/Ruby

2011-03-23 22:46:09

今天,看到一个比较有意思的进度条,于是想要模仿一下,这个的原理其实就是,
构造一个长度固定的串,不断的用某种符号替换空格,其中用到了\r,下面是代码
#源代码 bar.pl
#!/usr/bin/perl
for(my $i = 0; $i < 30; $i ++){
   print "\r";
   my $j;
   for( $j = 0; $j < $i; $j ++)
   {
      print "+";
  
   }
   for( $j = $j; $j < 30 ; $j ++ )
   {
      print " ";
   }
   print $i;
   sleep(1);
}
print "\n";
运行之后,结果怎么样呢,
等了30秒,最后直接显示

+++++++++++++++++++++++++++++ 29
网上搜了一下,原来是由于perl的输出,是以\n标识结束的,
如果没有\n,那么它会放到缓存里,到了最后一块输出,所以,就
成了只有最后一行的情况。
所以代码改成了
#!/usr/bin/perl
for(my $i = 0; $i < 30; $i ++){
   print "\r";
   my $j;
   for( $j = 0; $j < $i; $j ++)
   {
      print "+";
  
   }
   for( $j = $j; $j < 30 ; $j ++ )
   {
      print " ";
   }
   print $i;
   print "\n\b";
   sleep(1);
}
print "\n";
这样就好了,print"\n"之后,马上又退格"\b",这样就可以了,在Linux平台下测试通过



阅读(4325) | 评论(12) | 转发(1) |
0

上一篇:Handle.pl

下一篇:lines2one 将文件压成一行

给主人留下些什么吧!~~

riribi2011-03-24 21:09:22

diyindo2011-03-24 17:19:53

neobilly2011-03-24 15:27:25

小雅贝贝: 要多带着朋友写博文啊,谢谢~~.....
朋友们都在玩校内,写博客的人还真没几个

小雅贝贝2011-03-24 14:23:27

neobilly: 真的耶,多谢啊.....
要多带着朋友写博文啊,谢谢~~

neobilly2011-03-24 14:17:18

小雅贝贝: 现在可以插了。你试试吧~~.....
真的耶,多谢啊