Hello shylaja,
As McA has shown, you can use the /g modifier in this way if you first read in the whole data file. But if the file is large, it may be necessary to process it line by line. For that, you need a different strategy; for example:
#! perl
use strict;
use warnings;
use Data::Dump;
my @fields = qw( Summary Component Product Version Date );
my @issues;
while (<DATA>)
{
chomp;
if (/^ISSUE\s+(\w{5}\d+)$/)
{
push @issues, { Id => $1 };
}
else
{
for my $field (@fields)
{
if (/^$field\s*:\s+(.+)$/)
{
$issues[-1]->{$field} = $1;
last;
}
}
}
}
dd \@issues;
__DATA__
-----------------------------------------------------------
ISSUE ABCDE00078945
-----------------------------------------------------------
Summary : summary about the issue
Component : Component desscription
Product : Product name
Version : Version number
Date : 2013-10-15
-----------------------------------------------------------
ISSUE ABCDE00012345
-----------------------------------------------------------
Summary : summary about the issue
Component : Component description
Product : Product name
Version : Version number
Date : 2014-10-15
Output:
17:02 >perl 996_SoPW.pl
[
{
Component => "Component desscription ",
Date => "2013-10-15",
Id => "ABCDE00078945",
Product => "Product name",
Summary => "summary about the issue",
Version => "Version number",
},
{
Component => "Component description ",
Date => "2014-10-15",
Id => "ABCDE00012345",
Product => "Product name",
Summary => "summary about the issue",
Version => "Version number",
},
]
17:02 >
Hope that helps,