免费注册 查看新帖 |

Chinaunix

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

关于Smart::Comments进度条显示不准确问题求解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-07 15:51 |只看该作者 |倒序浏览
hi:
    如题: 用此模块的进度条显示极其不准确..
     或多: Working===============[113]    done%
     或少: Progressing..........          [30]%  

代码是比较简单的循环.. while(<FL>)   or  c-style for loops  ### Progressing...[%]

求解....

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
3 [报告]
发表于 2013-05-07 16:50 |只看该作者
不知道究竟有多少内容怎么计算百分比?显示的是个计数器而已。貌似只有 for (LIST) {} 显示的是百分比。

它用的是 filter 类似 C 的预处理机制。可以用 perl -MO=Deparse your-script.pl 查看实际执行的代码

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
4 [报告]
发表于 2013-05-09 10:09 |只看该作者
本帖最后由 iakuf 于 2013-05-09 10:10 编辑

回复 1# klathleen

正常的情况下, while 是用于不知道要循环多少次的情况下使用,比如读句柄进行真假判断,for 是用于确认要循环多少次的情况下使用(这是这二个的区别之一)。
你一定要在 while 中来输出进度,这本来就不太科学。

论坛徽章:
0
5 [报告]
发表于 2013-05-09 10:27 |只看该作者
回复 4# iakuf


    嗯....我本以为这个模块比较智能化...就像他名字一样... while 读句柄的时候会算一下文件的总行数..然后就得到了每一行的百分比,就能拿到精确的进度条了...看来此模块的进度显示 只能用于这种显式的语法  for ( 1..500 );  倒不如自己来实现了....

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
6 [报告]
发表于 2013-05-09 11:39 |只看该作者
本帖最后由 iakuf 于 2013-05-09 11:39 编辑

回复 5# klathleen

while 读句柄的时候会算一下文件的总行数....这个。。。。
这又得讲 while 和 for 的另一个区别了,while 是工作在标量环境,一次只读一行,所以不可能知道有多少行,不然文件太大,分析个日志内存直接吃光了怎么办。 for  是工作在列表环境,使用 for 会知道一共有多少行。因为他会给所有的东西都读到内存中来当成一个列表来处理。
所以你真要这么做,你用还是用错函数了。得用 for.


   

论坛徽章:
0
2 [报告]
发表于 2013-05-07 16:20 |只看该作者
我一般自己写进度条,很简单:

http://bbs.chinaunix.net/thread-1710504-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP