The best advice is to use one of the many XML parsing modules.
That said, your approach does work for the sample data you have provided. I can't resist offering you your same approach with a couple of minor improvements in the hope that you'll find them helpful.
print "This will calculate the total amount and To no of transactions +\n"; my ($cnt, $totalamt); # precompiled regex my $PAYMENT_AMOUNT_PATTERN = qr{ <payment \s+ amount> # opening tag ( # begin capture \d+[.]?\d* # digits with optional decimal point ) # end capture </payment \s+ amount> # closing tag }msx; LINE: while (<DATA>) { # capture to lexical variable my ($payment_amount) = /$PAYMENT_AMOUNT_PATTERN/; next LINE if not defined $payment_amount; $cnt++; $totalamt += $payment_amount; print; } print "The total amount found is $totalamt \n"; print "Total Transactions are $cnt \n";
In reply to Re: Counting XML Blocks in XML file and Calculating Total Amount
by Narveson
in thread Counting XML Blocks in XML file and Calculating Total Amount
by harishnuti
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |