use warnings; use strict; while () { chomp; my @sentences = split /(?<=\.)\s*/; #print '>', join ("<\n>", @sentences), '<'; foreach(@sentences){ print "$_\n"; } } __DATA__ Hello world. Hello Bretheren. Goodbye spaces. All I really want are se +ntences. [download] Which prints: Hello world. Hello Bretheren. Goodbye spaces. All I really want are sentences. Your code >Hello world.< >Hello Bretheren.< >Goodbye spaces.< >All I really want are sentences.< I would like: Hello world. Hello Bretheren. Goodbye spaces. All I really want are sentences.