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 : $!";