in reply to Print data after to 1st occurrence matches

Can you show us what you have so far?

I would probably read the file one line at a time, saving them as I go, and when you match what you want, print out what you have already seen (pretty much exactly as OP describes...) :

use warnings; use strict; open (my $fh, '<', 'test.txt') || die "Failed to open test input : $!" +; my $contents = ''; my $previous = 'Not set'; my $pass = 0; while (<$fh>){ my $line = $_; if ( $line =~ /^Content:/ && $previous =~ /^Subject:/ ){ ## if we matched the previous line as a 'Subject' line ## and this line is a 'Content' line print $contents; $pass = 1; last; } ## append current line and set previous line $contents .= $line; $previous = $line; } print "No match found.\n" unless $pass; close $fh || die "Failed to close test file : $!";

I know this is verbose, but KISS works well for me...

learningperl01 you described in words pretty much exactly as I have done, and broke the problem down into the component parts well, so maybe have a go next time! If you are having problems with regexes, then check out perlre

Update: Disclaimer! Code not tested!

Just a something something...