免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5173 | 回复: 9
打印 上一主题 下一主题

perl 的进度条怎么做 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-30 21:45 |只看该作者 |倒序浏览
我是这样想的。

#!/usr/bin/perl
for(my $i=0; $i<20; $i++){
#执行一些时间长的脚本
print "\r";
print $i; #显示进度$i/$steps*100
}

用 \r 清掉上个print,总感觉这样做不好(光标会在数字上滚动),估计会有更好的方法。不知道大家这种情况会怎么写

论坛徽章:
0
2 [报告]
发表于 2009-10-30 22:27 |只看该作者

回复 #1 rd16 的帖子

论坛徽章:
1
狮子座
日期:2013-12-16 16:09:24
3 [报告]
发表于 2009-10-30 22:53 |只看该作者

回复 #1 rd16 的帖子

你是要没有光标的这个效果么?
  1 #!/usr/bin/perl
  2 $|=1;
  3 print "\033[?25l";
  4 for(my $i=0; $i<20; $i++){
  5 print "\r";
  6
  7 print "$i/20"; #....$i/$steps*100
  8 sleep 1;
  9 }

论坛徽章:
0
4 [报告]
发表于 2009-10-31 12:41 |只看该作者
原帖由 Perl_Er 于 2009-10-30 22:27 发表
试一试 Smart::Comments
http://search.cpan.org/~chorny/S ... b/Smart/Comments.pm

好东西

论坛徽章:
0
5 [报告]
发表于 2009-10-31 19:34 |只看该作者
学习一下
顺便看积分,,

论坛徽章:
0
6 [报告]
发表于 2009-10-31 19:53 |只看该作者

回复 #3 ttcn 的帖子

$|=1;  <-----$|请问这个符号表示什么意思?
print "\033[?25l";  <-----打印这个是不是隐藏光标

论坛徽章:
1
狮子座
日期:2013-12-16 16:09:24
7 [报告]
发表于 2009-10-31 20:40 |只看该作者

回复 #6 rd16 的帖子

$|是为了能实时刷新屏幕(不用buffer),对于做后台在执行消耗cpu的操作前台需要实时刷新的程序有用

是隐藏光标

论坛徽章:
0
8 [报告]
发表于 2009-10-31 21:04 |只看该作者
原帖由 ttcn_cu 于 2009-10-31 20:40 发表
$|是为了能实时刷新屏幕(不用buffer),对于做后台在执行消耗cpu的操作前台需要实时刷新的程序有用

是隐藏光标


$|的说明:默认情况,输出到文件句柄的内容会被缓存起来。将变量$|设置为1,将会在输出操作结束时会立刻清空文件句柄。

------------------------------------------------------------------------------------------
$| 放在了代码的最上面,不知道会不会对其它程序造成影响。如果是在C#中是可以局部刷新一个标签

论坛徽章:
1
狮子座
日期:2013-12-16 16:09:24
9 [报告]
发表于 2009-10-31 21:10 |只看该作者

回复 #8 rd16 的帖子

这个开关基本上应该是无害的
如果关掉开关也能实现你的功能的话,可以把它去掉

论坛徽章:
0
10 [报告]
发表于 2009-10-31 21:24 |只看该作者
非常感谢 ttcn_cu 的解答,我这样写还没有发现什么问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP