in reply to Check for 'and'

It seems, to me, given the above structure, that since the data i spread over multiple lines. the solution lies in using a flip-flop operator e.g.
use warnings; use strict; my $save; while (<DATA>) { if (/^\{TAG\}/ .. /^\{COUNT\}/) { unless (/^\{(TAG|COUNT)\}/) { $save = $_; print "{TAG} and {COUNT2} is 1\n" if /\sand\s/; } } } __DATA__ {TAG} 0012310002 and 0012310003 {COUNT} 000000 {COUNT2} 000000 and 100001
Produces (not entirely unexpectedly:-):
$ perl tst.pl 0012310002 and 0012310003 $

Update:

Arrrgh!! Omitted 2nd question - now included. Also didn't show how to save the data between the given tags - also now included.

A user level that continues to overstate my experience :-))