LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 890|回复: 1

求助,怎样用perl实现这样一个功能

[复制链接]
发表于 2004-8-11 20:21:24 | 显示全部楼层 |阅读模式
怎样实现这样的一个文件转换,谢谢大家。
源文件格式如:
        mode1          mode2             mode3
       setup hold   setup hold  setup  hold
min        1    2     4      5     2     3
max        2    3         1      2     4     5

目标文件格式如:

        mode1
         setup hold  
min        1     2     
max        2     3       

        mode2
         setup hold
min        4       5
max        1       2   

        mode3
         setup  hold
min        2        3
max        4        5
 楼主| 发表于 2004-8-11 20:24:15 | 显示全部楼层

我自己写了个程序。可是不能完成这样的功能。

#!/usr/local/bin/perl

if(@ARGV!=2)
  {
    print "Usage : <sheet file> <out sheet file> \n";
    exit(0);
  }


($iSheet,$oSheet)=@ARGV;

open(INSHEET,$iSheet) || die "Cannot open >$iSheet< for reading\n";
open(OUTSHEET,">$oSheet") || die "Cannot open >$oSheet< for writing\n";
$Ln=0;
while($l=<INSHEET>) # Start of input report reading
{
        chop($l);
        $line[$Ln]=$l;
        $Ln=$Ln+1;
}
@mode=split(/\s+/,$line[0]);
$row_nu=@line;
$mode_nu=@{mode};
$mode_nu=$mode_nu - 2;
print "mode_number= ${mode_nu} \n";
print "row_number= ${row_nu} \n";

for($j=1;$j< ${row_nu};$j++) {
@row_split=split(/\s+/,${line}[$j]);
#print @row_split;
#print "\n";
for($i=0;$i<$mode_nu;$i++) {
${${mode_list}[${i}]}{"${row_split}[0]"} = join(" ",${row_split}[4*${i}+1],${row_split}[4*${i}+2],${row_split}[4*${i}+3],${row_split}[4*${i}+4]);
#print ${${mode_list}[${i}]}{"${row_split}[0]"};
#print "\n";
}
}

print @{${mode_list}[0]};

for($j=0;$j<$mode_nu;$j++) {
print OUTSHEET ${mode}[1+$j];
print OUTSHEET "\n";
print OUTSHEET "setup_slack        setup_nu                hold_slack        hold_nu \n";
for($i=1;$i<$row_nu;$i++) {
@row_split=split(/\s+/,${line}[${i}]);
#print ${row_split}[0];
#print "\n";
print OUTSHEET ${row_split}[0]."\t";
print OUTSHEET ${${mode_list}[${j}]}{"${row_split}[0]"};
print OUTSHEET "\n";
}
}

close(INSHEET);
close(OUTSHEET);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表