- 论坛徽章:
- 0
|
请教 文本文件转换的问题
你的程序到处是错误,而且你正则没学好啊
按照你的思路给你改了改,但这种思路我觉得太繁琐了,最好照我上个的那种算法
- use strict;
- my ($n);
- my $idx = 0;
- @ARGV = glob "cpuinfo" or die "no file found";
- while (<>;){
- if(/^([a-z])+: .*/)
- {
- if(/MDR_LOAD <- 1, MDR_INST <- 0/)
- {
- my @line = split(/:/, $_);
- chomp($line[1]);
- $n=ord($line[0]);
- print "$line[0]:$line[1]";
- $idx++;
- next;
- }
- my $need = $_;
- my @line2 = split(/:/,$need);
- if($idx >; 0 && ord($line2[0]) >; $n){
- if(ord($line2[0]) == $n+1){
- print ",$line2[1]";
- next;
- }else{
- my $b = chr(ord($line2[0])-1);
- print "$b:$line2[1]";
- next;
- }
- }
- print;
- }
- #$idx++;
复制代码
- [root@mail workspace]# cat cpuinfo
- R2 <- R1 + (R4)
- opcode op_add_21_4
- comment proc_opcode := "01100110"; -- R2 <- R1+(R4)
- a: MDR <- mem[PC], PC <- PC + 1
- b: MAR_SRC <- R4, MAR_LOAD <- 1, ADDR_SEL <- 1, MDR_INST <- 0, PC_INC <- 0, R2_PENDING <- 1
- c: MDR_SRC <- MEM, MDR_LOAD <- 1, MDR_INST <- 0, PC_INC <- 0, R2_PENDING <- 1
- d: ALUs1_SRC <- R1, ALUs2_SRC <- MDR, ALU_FUNC <- alu_add, ALUOUT_DEST <- R2, ALUOUT_LOAD <- 1
- e: WB_DEST <- R2, REG_LOAD <- 1
- [root@mail workspace]# ./update_file2.pl
- a: MDR <- mem[PC], PC <- PC + 1
- b: MAR_SRC <- R4, MAR_LOAD <- 1, ADDR_SEL <- 1, MDR_INST <- 0, PC_INC <- 0, R2_PENDING <- 1
- c: MDR_SRC <- MEM, MDR_LOAD <- 1, MDR_INST <- 0, PC_INC <- 0, R2_PENDING <- 1, ALUs1_SRC <- R1, ALUs2_SRC <- MDR, ALU_FUNC <- alu_add, ALUOUT_DEST <- R2, ALUOUT_LOAD <- 1
- d: WB_DEST <- R2, REG_LOAD <- 1
复制代码 |
|