use strict; use warnings; use feature qw(say); my $file = q(big.txt); my $size = -s( $file); my $pattern = qr((y+)(?:\n*)(y*)); open my $fh, '<', $file or die $!; read( $fh, my $data, $size ); close $fh; while( $data =~ m/$pattern/g ) { say qq($1$2); } __END__ # data like this: xyyyyyxxxx xxxxxxxxxx xxxxxxxxyy yyyxxxxxxx xxxxxxxxxx xxxxxxyyyy yxxxxxxxxx xxxxxxxxxx xxxxxyyyyy xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx # small version ;-) Desktop\monks>1129652.pl yyyyy yyyyy yyyyy yyyyy