Я выполняю некоторый анализ текста с помощью оператора триггера, и мои данные выглядят следующим образом:
COMMAND START
CELL
123
COUNTER1 COUNTER2 COUNTER3
23 25 45
COUNTER1 COUNTER2 COUNTER3
22 34 52
CELL
234
COUNTER1 COUNTER2 COUNTER3
12 35 35
END
Теперь мне нужно пройтись по этим данным и для каждой ячейки найти сумму COUNTER2.Как мы видим, под каждой ячейкой может быть 1 или более строк COUNTER.Я попытался использовать оператор триггера, как показано ниже, но он не работает.
my ($CELL_ID_COL1, $TEMP_COUNT);
my @line_contents;
while (<>) {
chomp;
if(/^COMMAND.*START$/ .. /^END$/) {
if (my $e1 = /^CELL$/ ... (/^CELL$/ || /^END$/)) {
if ($e1 == 2) {
@line_contents = split(/\s+/, $_); #Split the line read on whitespaces
$CELL_ID_COL1 = $line_contents[0];
print "$CELL_ID_COL1\n";
$TEMP_COUNT = 0;
}
if (my $e2 = /^COUNTER1.*COUNTER3$/ ...(/^COUNTER1.*COUNTER3$/ || /^CELL$/ || /^END$/) ) {
print "$_\n";
if ($e2 ==2) {
@line_contents = split(/\s+/, $_); #Split the line read on whitespaces
$TEMP_COUNT += $line_contents[1];
}
if ($e2 =~ /E0$/) {
redo;
}
}
if ($e1 =~ /E0$/) {
print "FINAL COUNT is: $TEMP_COUNT\n";
redo;
}
}
}
}
Я думаю, это должно было что-то делать с глобальным состоянием оператора триггера, обсуждавшимся в этом вопросе , но я не мог понять многое.Пожалуйста, помогите мне.
Большое спасибо заранее.