Мне нужно проверить, существует ли элемент массива из @lines
в файле данных. Из файла данных необходимо проверить соответствующий элемент problem
. Если да, распечатайте соответствующие элементы данных на экране. Элементы: problem
, occaredtime
, text
.
Сценарий находится ниже:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @lines = qw/problem1 problem4/;
print Dumper \@lines;
while (<DATA>){
my ($problem, $time, $text);
my $line = $_;
chomp($line);
if( $line =~ /problem\s+:\s+(.*)/ ){
$problem = $1;
}
if( $line =~ /time\s+:\s+(.*)/ ){
$time = $1;
}
if( $line =~ /comment\s+:\s+(.*)/ ){
$text = $1;
}
if (grep { $_ eq $problem } @lines){
print "Exists: $problem ** $time ** $text\n";
}
}
__DATA__
problem : problem1
occaredtime : 2020-03-17T06:28:18
comment : this is text for problem1
problem : problem2
occaredtime : 2020-03-17T05:00:00
comment : this is text for problem2
problem : problem3
occaredtime:2020-03-17T01:00:00
comment : this is text for problem3
Но здесь его данные печати, как показано ниже, вместо одной строки:
Exists: problem1 ** **
Exists: problem1 ** 2020-03-17T06:28:18 **
Exists: problem1 ** 2020-03-17T06:28:18 ** this is text for problem1
Exists: problem1 ** 2020-03-17T06:28:18 ** this is text for problem1
Может кто-нибудь, пожалуйста, дайте мне знать, почему он печатает таким образом.
РЕДАКТИРОВАТЬ:
Мне нужно печатать только ниже строки:
Exists: problem1 ** 2020-03-17T06:28:18 ** this is text for problem1