use strict; my $data; slurpfile ("yourfile.txt", $data); print $1 if $data =~ /(expression)/m; sub slurpfile { local $/ = undef; open IN, "<", $_[0] or return 0; $_[1] = ; close IN; return 1; }