in reply to Schedule Optimization
DateTime::SpanSet may help you write the time functions, together with DateTime::Event::Recurrence. Although these modules don't provide all the logic you need, they do provide the basic operations.
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 (85 votes). Check out past polls.