作者par4322 (Queeny)
看板Perl
标题[问题] for回圈问题
时间Thu Aug 21 16:09:27 2014
敢问各位高手
在下没碰过程式 这是第一次碰
所以问题可能很愚蠢 还请大家见谅 ><
code附在最下面
我要写一个perl程式 一个for的小回圈
就是我有一个arrfile
里面有一个档名,每个档名有一个对应的数字
像下面这样
20130327.N.HLA.01 22.24
20130327.N.HLA.02 20.24
20130327.N.HHA.02 10.00
20130327.N.HLB.01 22.24
20130327.N.HLB.02 25.15
20130327.N.HHB.02 22.24
20130327.N.ALC.01 23.13
20130327.N.ALC.02 22.24
20130327.N.HHC.02 22.25
20130327.Q.HLA.01 22.24
20130327.Q.HLA.02 22.25
20130327.Q.HHA.02 10.00
20130327.Q.HLB.01 22.24
20130327.Q.HLB.02 25.15
20130327.Q.HHB.02 22.24
20130327.Q.ALC.01 25.15
20130327.Q.ALC.02 22.24
20130327.Q.HHC.02 22.25
我假设fileheader是档名,Parr是对应的数字
然後我要把档名中,倒数
第二个栏位的最後一个字元是A的档案丢到file里,再丢到第一个副程式auto去执行
同样的,倒数第二个栏位的最後
一个字元是B跟C的档名,丢到file1跟file2里,再丢到第二个副程式autoH去执行
使用awk的那个地方 我也有点乱了 不晓得写的对不对 QAQ
因为像
20130327.N.ALC.01 23.13
20130327.N.ALC.02 22.24
这两个档案都含有A跟C 但我实际上是以最後一个字元来做分类的
以下是我一部分的CODE
########
if(-e $arrfile){
@fileheader=`awk '{print \$1}' $arrfile`;
@Parr=`awk '{print \$2}' $arrfile`;
for($j=0;$j<@fileheader;$j++){
chomp($fileheader[$j]);
chomp($Parr[$j]);
$file=$fileheader[$j]=grep'A' $arrfile |`awk '{print $0}' $arrfile`;
&auto($file,$Parr[$j]);
$file1=$fileheader[$j]=grep'B' $arrfile |`awk '{print $0}' $arrfile`;
$file2=$fileheader[$j]=grep'C' $arrfile |`awk '{print $0}' $arrfile`;
&autoH($file1,$file2,$Parr[$j]);
..........
}
sub auto {.........
sub autoH {...........
########
後面的"........"是已经写好而且正确的code
麻烦各位强中好手帮忙解答了 谢谢><
--
Sent from my Android
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.79.218.33
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Perl/M.1408608569.A.01C.html
1F:推 abliou: 建议你 全部都用awk或全部用perl debug会容易得多 08/21 16:37
2F:推 imce: 直觉是grep不对吧,你都说取最後一个字了,幼幼班的应该要用 08/21 16:45
3F:→ imce: substr配length来抓最後一个字。 08/21 16:45
4F:推 abliou: 这程式码难在他call shell处理完又丢回shell 绕一圈就觉得 08/21 17:04
5F:→ abliou: 抓虫有点吃力 原本好像单纯用perl就不难处理的问题 08/21 17:04