based on learning perl oreilly book