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,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
In reply to Re: matching characters
by Athanasius
in thread matching characters
by shylaja
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |