You might take a look at PythonChallenge.com It is a chained collection of puzzles which you solve by writing a computer program for each. The solution of each puzzle leads to the next one, so you can't solve them out of order.
Despite the name there is no requirement to use a specific programming language to solve the puzzles. There is a solutions Wiki where people have posted code to solve the problems in dozens of programming languages including perl.
A down side of the site is that you have to solve the problems in order, so if you get stuck on one, you cannot continue. Also as they are puzzles you need to have a Eureka moment on each to progress.