in reply to non-greedy piecewise matching
You have to use '.+?' instead of '.+' to make non-greediness. Take a look at perlre.
As you said, if .xml is present after each records, then we can also use substitution or split function.
$file =~ s/(\.xml)/$1\n/g;
An Englishman in New York
An American Werewolf in London
An American in Paris
The Innocents Abroad
An Idiot Abroad
Robinson Crusoe on Mars
A Connecticut_Yankee in King Arthur's Court
There and Back Again
Travels into Several Remote Nations of the World
Results (77 votes). Check out past polls.