use warnings; use strict; while () { print if s/{AUTHOR}\n// .. (s/{AUTHOR}\n//, s/{(?!AUTHOR})\w+}\n//); } __DATA__ {TAG} tag1 {AUTHOR} By June Fletcher JOURNAL {TAG} tag2 TOM MacCUBBIN {DATA} data1 {AUTHOR} Richard White {AUTHOR} MacCUBBIN {SOUR} #### By June Fletcher JOURNAL Richard White MacCUBBIN