[問題] 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