use strict; use warnings; my $transaction_flag = 0; my $match_flag = 0; my $count = 0; my @value_list = ('154216722'); my @transaction = (); while (my $line = <>) { if ($line =~ /\/){ $transaction_flag = 1; } if ($transaction_flag) { push @transaction, $line; for (@value_list) { if ($line =~ /$_/) { $match_flag = 1; $count++; } } } if ($line =~ /\<\/END Transaction\>/){ $transaction_flag = 0; if ($match_flag) { print @transaction; } $match_flag = 0; @transaction = (); } }