[问题] for循环问题

楼主: par4322 (lalala)   2014-08-21 16:09:27
敢问各位高手
在下没碰过程式 这是第一次碰
所以问题可能很愚蠢 还请大家见谅 ><
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
麻烦各位强中好手帮忙解答了 谢谢><
作者: abliou (愚者)   2014-08-21 16:37:00
建议你 全部都用awk或全部用perl debug会容易得多
作者: imce (蜥蜴)   2014-08-21 16:45:00
直觉是grep不对吧,你都说取最后一个字了,幼幼班的应该要用substr配length来抓最后一个字。
作者: abliou (愚者)   2014-08-21 17:04:00
这程式码难在他call shell处理完又丢回shell 绕一圈就觉得抓虫有点吃力 原本好像单纯用perl就不难处理的问题

Links booklink

Contact Us: admin [ a t ] ucptt.com