!/usr/bin/perl use warnings; use strict; my $file = "/path/to/file.txt"; local $/; # added after post my $content = ; if ( $content =~ m/(ASDF \{)(.*?)plz_match(.*?)(\})/s ) { print "Matched: <<< $& >>>\n"; } else { print "No match: |$content|\n"; } __DATA__ ASDF { tmp plz_match tmp } string2 { tmp } string3 { tmp }