I recommend that you identify the language you plan to use, and learn that one. Other posts have given good suggestions for particular languages.
That kind of turns the question into a chicken-and-egg problem, doesn't it?
To learn "pure" programming, Perl itself may not be the best choice since:
- It permits (and has been known to accidentally work correctly in the face of) major typographical and syntactical errors. This lets one off the hook for what I can only describe as being the, "I did everything right and it still won't ... (compile, run, work, etc.)" class of beginner programming errors -- IMHO, there's no way to become a programmer without experiencing this more times than I care to remember. Of course, these must eventually be resolved with what I think of as "Aha!" moments.
- Loosely, T M T O W T D I (There's more than one way to do it). When learning, it can be confusing finding out that what you thought was the "right way" to do something is merely one of several ways that work, and, in fact, does what you want by accident or as a side effect (to wit, assigning an array element with the all-too-often seen, @array[0] = 'something').
- Examples of "bad" perl programming currently permeate the web. That they happen to work doesn't necessarily mean that they should be emulated. Witness the discussion on PerlMonks about Matt's Script Archive.
At the risk of inviting the wrath of the gods, I'd recommend starting with one of the IDE-based english-like languages (VB comes to mind) just to get a handle on concepts like loops, if-then-else logic and the like, and THEN move up (notice I said "up") to Perl.
dmm
You can give a man a fish and feed him for a day ...
Or, you can teach him to fish and feed him for a lifetime