免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3409 | 回复: 6

数组的分类 [复制链接]

论坛徽章:
0
发表于 2014-08-03 17:10 |显示全部楼层
文本$file="d:/temp/inf" 里面的内容如下:

### Layer - drl features data ###
#P 203.09967 210.222845 r650 P 1 0 N;.bit=0.65,.drill=plated
#P 203.09967 216.039445 r650 P 1 0 N;.bit=0.65,.drill=plated
#P 213.7973875 207.212945 r950 P 2 0 N;.bit=0.95,.drill=plated
#P 213.7973875 209.7128125 r950 P 2 0 N;.bit=0.95,.drill=plated
#P 213.7973875 211.71281 r950 P 2 0 N;.bit=0.95,.drill=plated
#P 213.7973875 214.21293 r950 P 2 0 N;.bit=0.95,.drill=plated
#P 220.3886875 209.097625 r350 P 3 0 N;.bit=0.35,.drill=plated
#P 239.967 215.485725 r450 P 4 0 N;.bit=0.45,.drill=plated
#P 207.8106075 217.776805 r450 P 4 0 N;.bit=0.45,.drill=plated
#P 203.4976875 217.809825 r450 P 4 0 N;.bit=0.45,.drill=plated
#P 252.6641475 247.505185 r450 P 4 0 N;.bit=0.45,.drill=plated
#L 299.6796875 245.8001875 275.336 245.8001875 r4500 P 5 ;.bit=4.50,.drill=plated
#P 294.0231575 235.4097475 r4200 P 0 0 N



   
我想把文本中的某些行写到一个数组里面@a里面去,但是要满足条件(句首必须是#P,字母r后面的数字要大于4000)求解?

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
发表于 2014-08-03 19:01 |显示全部楼层
本帖最后由 huang6894 于 2014-08-03 19:04 编辑

这样可以吗?
oo.png

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
发表于 2014-08-03 19:17 |显示全部楼层
  1. #!perl
  2. use warnings;
  3. use strict;
  4. my @a;
  5. while(<DATA>)
  6. {
  7.         my($num) = /r(\d+)/;
  8.         push(@a, $_) if /^#P/ && $num > 4000;
  9. }
  10. __DATA__
  11. ### Layer - drl features data ###
  12. #P 203.09967 210.222845 r650 P 1 0 N;.bit=0.65,.drill=plated
  13. #P 203.09967 216.039445 r650 P 1 0 N;.bit=0.65,.drill=plated
  14. #P 213.7973875 207.212945 r950 P 2 0 N;.bit=0.95,.drill=plated
  15. #P 213.7973875 209.7128125 r950 P 2 0 N;.bit=0.95,.drill=plated
  16. #P 213.7973875 211.71281 r950 P 2 0 N;.bit=0.95,.drill=plated
  17. #P 213.7973875 214.21293 r950 P 2 0 N;.bit=0.95,.drill=plated
  18. #P 220.3886875 209.097625 r350 P 3 0 N;.bit=0.35,.drill=plated
  19. #P 239.967 215.485725 r450 P 4 0 N;.bit=0.45,.drill=plated
  20. #P 207.8106075 217.776805 r450 P 4 0 N;.bit=0.45,.drill=plated
  21. #P 203.4976875 217.809825 r450 P 4 0 N;.bit=0.45,.drill=plated
  22. #P 252.6641475 247.505185 r450 P 4 0 N;.bit=0.45,.drill=plated
  23. #L 299.6796875 245.8001875 275.336 245.8001875 r4500 P 5 ;.bit=4.50,.drill=plated
  24. #P 294.0231575 235.4097475 r4200 P 0 0 N
复制代码

论坛徽章:
26
2015亚冠之胡齐斯坦钢铁
日期:2015-06-25 21:40:202015亚冠之柏斯波利斯
日期:2015-08-31 17:03:192015亚冠之柏斯波利斯
日期:2015-11-07 13:10:00程序设计版块每日发帖之星
日期:2015-11-10 06:20:00每日论坛发贴之星
日期:2015-11-10 06:20:00程序设计版块每日发帖之星
日期:2015-11-26 06:20:00程序设计版块每日发帖之星
日期:2015-12-02 06:20:00黄金圣斗士
日期:2015-12-07 17:57:4615-16赛季CBA联赛之天津
日期:2015-12-23 18:34:14程序设计版块每日发帖之星
日期:2016-01-02 06:20:00程序设计版块每日发帖之星
日期:2016-01-06 06:20:00每日论坛发贴之星
日期:2016-01-06 06:20:00
发表于 2014-08-03 21:06 |显示全部楼层
这样吗?
  1. my @a = grep { /^#P\s\S+\s\S+\sr(\d+)/ && $1 > 4000 } <DATA>;
  2. say @a;

  3. __DATA__
  4. ### Layer - drl features data ###
  5. #P 203.09967 210.222845 r650 P 1 0 N;.bit=0.65,.drill=plated
  6. #P 203.09967 216.039445 r650 P 1 0 N;.bit=0.65,.drill=plated
  7. #P 213.7973875 207.212945 r950 P 2 0 N;.bit=0.95,.drill=plated
  8. #P 213.7973875 209.7128125 r950 P 2 0 N;.bit=0.95,.drill=plated
  9. #P 213.7973875 211.71281 r950 P 2 0 N;.bit=0.95,.drill=plated
  10. #P 213.7973875 214.21293 r950 P 2 0 N;.bit=0.95,.drill=plated
  11. #P 220.3886875 209.097625 r350 P 3 0 N;.bit=0.35,.drill=plated
  12. #P 239.967 215.485725 r450 P 4 0 N;.bit=0.45,.drill=plated
  13. #P 207.8106075 217.776805 r450 P 4 0 N;.bit=0.45,.drill=plated
  14. #P 203.4976875 217.809825 r450 P 4 0 N;.bit=0.45,.drill=plated
  15. #P 252.6641475 247.505185 r450 P 4 0 N;.bit=0.45,.drill=plated
  16. #L 299.6796875 245.8001875 275.336 245.8001875 r4500 P 5 ;.bit=4.50,.drill=plated
  17. #P 294.0231575 235.4097475 r4200 P 0 0 N
复制代码

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
发表于 2014-08-04 10:20 |显示全部楼层
回复 4# substr函数


膜拜      

论坛徽章:
0
发表于 2014-08-04 17:01 |显示全部楼层
谢谢大家的回答,非常高心

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2014-08-04 17:43 |显示全部楼层
回复 1# zhangfenyun

>>...但是要满足条件(句首必须是#P,字母r后面的数字大于4000)求解?


if(m/^#P .*r(\d+)/){
  if($1 > 4000){
     # Your code
  }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP