Perl 板


LINE

各位好啊,我是perl的超级新手,资历一个月 我有个档案(档名为session)内容为 192.168.1.123 1088 43009 68.142.233.138 5061 WAN2 192.168.1.191 1984 61313 202.43.199.246 80 WAN1 192.168.1.192 1728 61313 207.46.110.81 1863 WAN2 192.168.1.211 50464 49377 202.39.48.85 161 WAN1 192.168.1.131 1857 45826 68.142.233.167 5061 WAN1 192.168.1.108 1377 39458 168.95.192.1 53 WAN2 192.168.1.133 1665 46146 207.46.108.89 1863 WAN1 192.168.1.93 1025 35266 168.95.192.1 53 WAN1 192.168.1.191 1154 60483 168.95.192.1 53 WAN1 192.168.1.194 2563 62660 65.54.195.188 80 WAN1 192.168.1.131 1860 45829 202.43.193.120 5061 WAN1 192.168.1.190 2500 61573 216.239.63.189 80 WAN2 192.168.1.194 2564 62661 210.65.0.40 80 WAN1 192.168.1.124 1670 43847 203.133.33.106 80 WAN1 192.168.1.105 1479 38792 203.84.196.97 80 WAN2 192.168.1.131 1479 45448 216.155.193.131 119 WAN2 192.168.1.105 1480 38793 203.84.196.97 80 WAN2 192.168.1.191 1961 61290 202.43.199.246 80 WAN1 192.168.1.105 1482 38795 203.84.196.97 80 WAN2 192.168.1.196 1451 62060 220.133.85.118 1095 WAN2 我想要统计各个IP的连线总数,於是我写了下面的程式 #!/usr/bin/perl -w $FileName = "./session"; $TempFile = "./temp"; #读取来源档 open (SRC_FILE, "$FileName"); open (TEMP_FILE, ">$TempFile"); #将读取到的sessio档去掉开头的空白後另存到TempFile里 while(<SRC_FILE>) { $_ =~ s/^\s+//g; print TEMP_FILE; } close(SRC_FILE); close(TEMP_FILE); open (TEMP_FILE, "$TempFile"); @array = <TEMP_FILE>; close (TEMP_FILE); #将项目拆解并存到各自的阵列 foreach (@array) { ($pri_ip, $pri_port, $pse_port, $peer_ip, $peer_port, $interface) = split(/\s+/, "$_"); push @pri_ip, $pri_ip; push @pri_port, $pri_port; push @pse_port, $pse_port; push @peer_ip, $peer_ip; push @peer_port, $peer_port; push @interface, $interface; } #将储存IP的阵列排序 @s = sort {$a cmp $b} @pri_ip; #记数归零 $counter = 1; $i = 0; { # no warnings; while( $i <= $#s ) { if( $s[$i] eq $s[($i+1)] ) { $counter++; $i++; } else { print "$s[$i] => $counter\n"; $counter = 1; $i++; next; } } } 问题来了当我执行到最後一个比较时就会出现如下错误,所以我只好在while上面 加上no warnings来避免错误讯息的产生 192.168.1.192 => 1 192.168.1.194 => 3 192.168.1.195 => 1 192.168.1.196 => 2 192.168.1.211 => 1 Use of uninitialized value in string eq at ./session.pl line 39. 192.168.1.93 => 1 想请教各位是否有更好的方式来处理呢?先谢谢您花时间看我的问题 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 221.169.170.106
1F:推 reizarc:单纯想统计 ip 出现次数的话, 用 hash 比较方便喔 :p 03/06 22:25
2F:推 chhuang:Array::PAT 看看~ 03/06 22:27
3F:→ reizarc:那个 warning 想必是 undef value, array accees 超出罗 03/06 22:30







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP