Помогите пожалуйста решить задачу.
Фрагмент исходного кода.
Xmx3 mux_32_3 $PINS mux_out=mux_w[3] a[4]=ADDR[12] a[3]=ADDR[11] a[2]=ADDR[10]
+ a[1]=ADDR[9] a[0]=ADDR[8] d[31]=BL[127] d[30]=BL[126] d[29]=BL[125]
+ d[28]=BL[124] d[27]=BL[123] d[26]=BL[122] d[25]=BL[121] d[24]=BL[120]
+ d[23]=BL[119] d[22]=BL[118] d[21]=BL[117] d[20]=BL[116] d[19]=BL[115]
+ d[18]=BL[114] d[17]=BL[113] d[16]=BL[112] d[15]=BL[111] d[14]=BL[110]
+ d[13]=BL[109] d[12]=BL[108] d[11]=BL[107] d[10]=BL[106] d[9]=BL[105]
+ d[8]=BL[104] d[7]=BL[103] d[6]=BL[102] d[5]=BL[101] d[4]=BL[100] d[3]=BL[99]
+ d[2]=BL[98] d[1]=BL[97] d[0]=BL[96]
Xmx4 mux_32_4 $PINS mux_out=mux_w[4] a[4]=ADDR[12] a[3]=ADDR[11] a[2]=ADDR[10]
+ a[1]=ADDR[9] a[0]=ADDR[8] d[31]=BL[159] d[30]=BL[158] d[29]=BL[157]
+ d[28]=BL[156] d[27]=BL[155] d[26]=BL[154] d[25]=BL[153] d[24]=BL[152]
+ d[23]=BL[151] d[22]=BL[150] d[21]=BL[149] d[20]=BL[148] d[19]=BL[147]
+ d[18]=BL[146] d[17]=BL[145] d[16]=BL[144] d[15]=BL[143] d[14]=BL[142]
+ d[13]=BL[141] d[12]=BL[140] d[11]=BL[139] d[10]=BL[138] d[9]=BL[137]
+ d[8]=BL[136] d[7]=BL[135] d[6]=BL[134] d[5]=BL[133] d[4]=BL[132] d[3]=BL[131]
+ d[2]=BL[130] d[1]=BL[129] d[0]=BL[128]Нужно вырезать 2ое слово в строке начинающейся с X, вставить его в последнюю строку, начинающуюся с + данного модуля. Если следующая строка начинается не с +, то это уже другой модуль. Также из всего текста нужно удалить конструкции ...=, $PINS.
Есть скрипт, который работает для однострочных модулей, но как описать это для модулей с переносом (начинающихся на +) я не знаю, ибо Perlом занимаюсь 1 день.
Вот скрипт:
#!/usr/bin/perl
open RFILE,"file1.txt";
open WFILE,">/file2.txt";
while (<RFILE>){
my @line;
chomp;
$l = $_;
$l =~ s/[a-z]=//g;
#$l =~ s/ .*?=/ /g;
$l =~ s/ \$PINS//g;
if ($l =~ m/^X.*/){
@line = split(/ +/,$l);
$line[$#line+1] = "vdd! gnd! ".$line[1];
$line[1] = "";
$l = join(" ",@line);
}
{
print WFILE $l,"\n";
}
}
close WFILE;
close RFILE;