There are at least three basic approaches, and you'll really get a hold on Perl (and it will get hold of you) when you've done them all:
- Take a Perl application that someone else has written and that is useful to you. Analyze what you do when using that app, and think of a way to improve the process by altering and/or adding to what the perl script does -- e.g. it might be nice if there were more flexibility for handling different inputs or outputs, or maybe there's some part of the usage that seems tedious or inapt and could be optimized. Adapt the script to your preferences, and from that point on, use your own version of the script.
- Similar to the above, but the existing tool is written in some other language (C, shell, awk, BASIC, whatever); maybe you need to port a tool (or game) from an old system to a new one, and/or the original language of the tool might get in the way of porting or maintaining it. (Or maybe, as you port it, you'd like to enhance it so it's better suited to the new environment.) This approach is trickier, but if done with careful attention to the differences in design between Perl and the other language, it's extremely rewarding and instructive.
- Consider some process you do often (for fun or work) that involves several discrete activities that you are handling manually, especially if it requires some tedious, repetitive, predictable steps. Write a script to automate or at least reduce the manual labor involved in the process.
The common theme among all these is that you start with a specific goal: improve a process in particular ways, or provide a new way to do a particular process, based on what is relevant to you in some way.