Perl 板


LINE

※ 引述《nemay (may)》之铭言: : 有个问题, 想请PERL版的前辈们给点指教... : 我写了一个程式, 期望它功能如下所述: : 首先读取档案内容, 取得每一个开头为TREND_DEF的字串, : [0] [1] [2] [3] : TREND_DEF XXXXXXX XXXXXX : TREND_DEF XXX XXXXXX XXXXXX XXXXXXX : TREND_DEF XXXXX XXXXXX XXXXXX : . : . : . : XXXXXXX 99999 : XXX 88888 : XXXXX 7777 : 将每个字串split後,第[1]项都丢进阵列当作字串比对的key word : 再使用每个key word去搜寻开头为"key word"的字串 : 但是遇到一个问题!! (如下面程式红色标记部分) : 正规表示式中, 如果欲以字串作为搜寻的条件要怎麽写呢?? : : ======================================================= : #!/usr/bin/perl; : use strict; : use warnings; : open INPUT,"<XXX.log" || warn "OPEN FAIL:$!"; : open OUTPUT,">XXX.txt" || warn "Can't creat file :$!"; : while(<INPUT>) : { : my @return = &searchitem($_); : my $search = $return[1]; : if ($_ =~ m/{^$search}/) : { : my $data = $_ ; : print OUTPUT "data\n"; : } : } : close INPUT; : close OUTPUT; : sub searchitem : { : my $search = shift; : if ($search =~ /(^TREND_DEF)/) : { : my @item = split (/\s+/, $search); : return @item; : } : } 1.subroutine部分 你把整行split後回传 这样@return里面并不都是你要的keyword 2.红字部分 那样写 只会就subroutine回传的值做比对 这样永远不会有比对成功的时候 (因为你一直拿同一行的[0][1]做比对) 以下我是依照你的想法写的 你参考看看 . . . while (my $line = <INPUT>) { my @return = &searchitem($line); foreach my $KEYWORD (@return) { if ($line =~ /^$KEYWORD/) { my $data = $line; print OUTPUT "$data\n"; } } } . . . sub searchitem() { my $search = shift; if ($search =~ /^TREND_DEF\s(.+)\s/) { my $keyword = $1; return $keyword; } } 但就你的想法 可能会发生一个问题 有可能keyword为开头的字串在前面出现 但keyword在之後才取得 这样你要的那行字串就不会被找到 所以建议你先把所有keyword找出来 再去比对keyword为开头的字串 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.43.215.20
1F:→ nemay:谢谢你的指点跟建议, 我再trytry看... 12/11 19:11
※ 编辑: jamesbear 来自: 114.43.209.93 (12/12 00:48)







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灯, 水草

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

TOP