Я хотел бы найти значения после определенного слова (Текущее значение =) в файле журнала и создать строку со значениями.Perl - поиск значений в файле журнала и сохранение/печать их в виде строки.
vcs_output.log: файл журнала
** Fault injection **
Count = 1533
0: Path = cmp_top.iop.sparc0.exu.alu.byp_alu_rcc_data_e[6]
0: Current value = x
1: Path = cmp_top.iop.sparc0.exu.alu.byp_alu_rs3_data_e[51]
1: Current value = x
2: Path = cmp_top.iop.sparc0.exu.alu.byp_alu_rs1_data_e[3]
2: Current value = 1
3: Path = cmp_top.iop.sparc0.exu.alu.shft_alu_shift_out_e[18]
3: Current value = 0
4: Path = cmp_top.iop.sparc0.exu.alu.byp_alu_rs3_data_e[17]
4: Current value = x
5: Path = cmp_top.iop.sparc0.exu.alu.byp_alu_rs1_data_e[43]
5: Current value = 0
6: Path = cmp_top.iop.sparc0.exu.alu.byp_alu_rcc_data_e[38]
6: Current value = x
7: Path = cmp_top.iop.sparc0.exu.alu.byp_alu_rs2_data_e_l[30]
7: Current value = 1
.
.
.
Если хранить значения после того, как "Текущее значение =", то х, х, 1,0, х, 0, х, 1. Я в конечном счете сохраняю/печатаю их как строку, такую как xx10x0x1.
Вот мой код code.pl:
#!/usr/bin/perl
use strict;
use warnings;
##### Read input
open (my $input_fh, '<', 'vcs_output.log') or die $!;
chomp (my @input = <$input_fh>);
my $i=0;
my @arr;
while (@input) {
if (/Current value = /)
$arr[i]= $input; # put the matched value to array
}
}
## make a string from the array using an additional loop
close ($input_fh);
Я думаю, что есть способ сделать строку в одном цикле (или даже не используя цикл). Пожалуйста, посоветуйте мне сделать это. Любое предложение приветствуется.
Я принял ответ прямо ниже. Я прошу прощения. Я проголосовал, но я забыл принять –