Thanks all but my requirments have now slightly changed. (Issue A) Instead of using a file which contains the datadump, I have to read the data from a url. I'm able to read it line by line but not as an array of multi-line records. This is what I have now:
my $url = "http://.......";
my $user_agent = new LWP::UserAgent;
my $report = $user_agent->get($url);
$report = $report->content;
my @code = split("\n", $report);
Another problem is that as part of the pattern searching within each record from the content of the url, for <task ... />, I need append it as such <task ... a="123"/> and then return this to the parent record and Print that record. So the Input from the url will look something like:"
<ticket ... state="bad" ....>
<version="1.23.4.8">
....
<task ... />
....
</ticket>
<ticket ... state="good" ....>
<version="bad">
....
<task ... />
....
</ticket>
<ticket ... state="good" ....>
<version="1.12.32.4">
....
<task ... />
....
</ticket>
<ticket ... state="good" ....>
<version="1.1.3.9">
....
<task ... />
<task ... />
<task ... />
....
</ticket>
So in this case, the output should contain only the last 2 records(tickets) as the first 2 records fail the required conditions and the last 2 records which do pass, process the <task ... > lines and are printed accordingly. Also note that there may be more than 1 <task ... > per record. The Output will be dumped into an xml file and should look like:
<ticket ... state="good" ....>
<version="1.12.32.4">
....
<task ... a="1.1.3"/>
....
</ticket>
<ticket ... state="good" ....>
<version="1.1.3.9">
....
<task ... a="1.2"/>
<task ... a="5.1"/>
<task ... a="8"/>
....
</ticket>
(Issue B): Curently, I'm able to append a=".." to <task ... a=".."> but when I try to print it as part of the updated parent record, its still prining it as it was in the origanl record.
As you can see, I'm just starting in Perl. Please do help. |